annotate DEPENDENCIES/mingw32/Python27/Lib/site-packages/numpy/distutils/unixccompiler.py @ 118:770eb830ec19 emscripten

Typo fix
author Chris Cannam
date Wed, 18 May 2016 16:14:08 +0100
parents 2a2c65a20a8b
children
rev   line source
Chris@87 1 """
Chris@87 2 unixccompiler - can handle very long argument lists for ar.
Chris@87 3
Chris@87 4 """
Chris@87 5 from __future__ import division, absolute_import, print_function
Chris@87 6
Chris@87 7 import os
Chris@87 8
Chris@87 9 from distutils.errors import DistutilsExecError, CompileError
Chris@87 10 from distutils.unixccompiler import *
Chris@87 11 from numpy.distutils.ccompiler import replace_method
Chris@87 12 from numpy.distutils.compat import get_exception
Chris@87 13
Chris@87 14 if sys.version_info[0] < 3:
Chris@87 15 from . import log
Chris@87 16 else:
Chris@87 17 from numpy.distutils import log
Chris@87 18
Chris@87 19 # Note that UnixCCompiler._compile appeared in Python 2.3
Chris@87 20 def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
Chris@87 21 """Compile a single source files with a Unix-style compiler."""
Chris@87 22 # HP ad-hoc fix, see ticket 1383
Chris@87 23 ccomp = self.compiler_so
Chris@87 24 if ccomp[0] == 'aCC':
Chris@87 25 # remove flags that will trigger ANSI-C mode for aCC
Chris@87 26 if '-Ae' in ccomp:
Chris@87 27 ccomp.remove('-Ae')
Chris@87 28 if '-Aa' in ccomp:
Chris@87 29 ccomp.remove('-Aa')
Chris@87 30 # add flags for (almost) sane C++ handling
Chris@87 31 ccomp += ['-AA']
Chris@87 32 self.compiler_so = ccomp
Chris@87 33
Chris@87 34 display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
Chris@87 35 try:
Chris@87 36 self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
Chris@87 37 extra_postargs, display = display)
Chris@87 38 except DistutilsExecError:
Chris@87 39 msg = str(get_exception())
Chris@87 40 raise CompileError(msg)
Chris@87 41
Chris@87 42 replace_method(UnixCCompiler, '_compile', UnixCCompiler__compile)
Chris@87 43
Chris@87 44
Chris@87 45 def UnixCCompiler_create_static_lib(self, objects, output_libname,
Chris@87 46 output_dir=None, debug=0, target_lang=None):
Chris@87 47 """
Chris@87 48 Build a static library in a separate sub-process.
Chris@87 49
Chris@87 50 Parameters
Chris@87 51 ----------
Chris@87 52 objects : list or tuple of str
Chris@87 53 List of paths to object files used to build the static library.
Chris@87 54 output_libname : str
Chris@87 55 The library name as an absolute or relative (if `output_dir` is used)
Chris@87 56 path.
Chris@87 57 output_dir : str, optional
Chris@87 58 The path to the output directory. Default is None, in which case
Chris@87 59 the ``output_dir`` attribute of the UnixCCompiler instance.
Chris@87 60 debug : bool, optional
Chris@87 61 This parameter is not used.
Chris@87 62 target_lang : str, optional
Chris@87 63 This parameter is not used.
Chris@87 64
Chris@87 65 Returns
Chris@87 66 -------
Chris@87 67 None
Chris@87 68
Chris@87 69 """
Chris@87 70 objects, output_dir = self._fix_object_args(objects, output_dir)
Chris@87 71
Chris@87 72 output_filename = \
Chris@87 73 self.library_filename(output_libname, output_dir=output_dir)
Chris@87 74
Chris@87 75 if self._need_link(objects, output_filename):
Chris@87 76 try:
Chris@87 77 # previous .a may be screwed up; best to remove it first
Chris@87 78 # and recreate.
Chris@87 79 # Also, ar on OS X doesn't handle updating universal archives
Chris@87 80 os.unlink(output_filename)
Chris@87 81 except (IOError, OSError):
Chris@87 82 pass
Chris@87 83 self.mkpath(os.path.dirname(output_filename))
Chris@87 84 tmp_objects = objects + self.objects
Chris@87 85 while tmp_objects:
Chris@87 86 objects = tmp_objects[:50]
Chris@87 87 tmp_objects = tmp_objects[50:]
Chris@87 88 display = '%s: adding %d object files to %s' % (
Chris@87 89 os.path.basename(self.archiver[0]),
Chris@87 90 len(objects), output_filename)
Chris@87 91 self.spawn(self.archiver + [output_filename] + objects,
Chris@87 92 display = display)
Chris@87 93
Chris@87 94 # Not many Unices required ranlib anymore -- SunOS 4.x is, I
Chris@87 95 # think the only major Unix that does. Maybe we need some
Chris@87 96 # platform intelligence here to skip ranlib if it's not
Chris@87 97 # needed -- or maybe Python's configure script took care of
Chris@87 98 # it for us, hence the check for leading colon.
Chris@87 99 if self.ranlib:
Chris@87 100 display = '%s:@ %s' % (os.path.basename(self.ranlib[0]),
Chris@87 101 output_filename)
Chris@87 102 try:
Chris@87 103 self.spawn(self.ranlib + [output_filename],
Chris@87 104 display = display)
Chris@87 105 except DistutilsExecError:
Chris@87 106 msg = str(get_exception())
Chris@87 107 raise LibError(msg)
Chris@87 108 else:
Chris@87 109 log.debug("skipping %s (up-to-date)", output_filename)
Chris@87 110 return
Chris@87 111
Chris@87 112 replace_method(UnixCCompiler, 'create_static_lib',
Chris@87 113 UnixCCompiler_create_static_lib)