diff options
| author | Charles Harris <charlesr.harris@gmail.com> | 2015-10-20 08:59:26 -0600 |
|---|---|---|
| committer | Charles Harris <charlesr.harris@gmail.com> | 2015-10-20 08:59:26 -0600 |
| commit | a08437e12d6b6796f4b0beda49bce9adc37db63d (patch) | |
| tree | e09edef2c87e623425d465552fc901e1176704f5 /numpy/distutils | |
| parent | 5fd1707ea9576b5a4efff5866a8e8d36f36ef6e9 (diff) | |
| download | numpy-a08437e12d6b6796f4b0beda49bce9adc37db63d.tar.gz | |
Revert "Merge pull request #5614 from charris/cleanup-gh-5587"
Revert mingwpy modifications to distutils. They are causing problems
for non-windows builds and it is better to wait until mingypy is
further along.
This reverts commit 96abd32de241864ee97f30357234cbc9a96c43ae, reversing
changes made to 06af9918f6bf03b8d818ec834f9fb48db57d1489.
Diffstat (limited to 'numpy/distutils')
| -rw-r--r-- | numpy/distutils/fcompiler/gnu.py | 32 | ||||
| -rw-r--r-- | numpy/distutils/mingw32ccompiler.py | 67 | ||||
| -rw-r--r-- | numpy/distutils/system_info.py | 18 |
3 files changed, 32 insertions, 85 deletions
diff --git a/numpy/distutils/fcompiler/gnu.py b/numpy/distutils/fcompiler/gnu.py index a7fd3a77f..37be0800d 100644 --- a/numpy/distutils/fcompiler/gnu.py +++ b/numpy/distutils/fcompiler/gnu.py @@ -20,8 +20,6 @@ TARGET_R = re.compile("Target: ([a-zA-Z0-9_\-]*)") # XXX: handle cross compilation def is_win64(): return sys.platform == "win32" and platform.architecture()[0] == "64bit" -def is_win32(): - return sys.platform == "win32" and platform.architecture()[0] == "32bit" if is_win64(): #_EXTRAFLAGS = ["-fno-leading-underscore"] @@ -138,7 +136,7 @@ class GnuFCompiler(FCompiler): opt.extend(['-undefined', 'dynamic_lookup', '-bundle']) else: - opt.append("-shared -Wl,-gc-sections -Wl,-s") + opt.append("-shared") if sys.platform.startswith('sunos'): # SunOS often has dynamically loaded symbols defined in the # static library libg2c.a The linker doesn't like this. To @@ -210,18 +208,9 @@ class GnuFCompiler(FCompiler): # With this compiler version building Fortran BLAS/LAPACK # with -O3 caused failures in lib.lapack heevr,syevr tests. opt = ['-O2'] - elif v and v >= '4.6.0': - if is_win32(): - # use -mincoming-stack-boundary=2 - # due to the change to 16 byte stack alignment since GCC 4.6 - # but 32 bit Windows ABI defines 4 bytes stack alignment - opt = ['-O2 -march=core2 -mtune=generic -mfpmath=sse -msse2 ' - '-mincoming-stack-boundary=2'] - else: - opt = ['-O2 -march=x86-64 -DMS_WIN64 -mtune=generic -msse2'] else: - opt = ['-O2'] - + opt = ['-O3'] + opt.append('-funroll-loops') return opt def _c_arch_flags(self): @@ -361,7 +350,10 @@ class Gnu95FCompiler(GnuFCompiler): return "" def get_flags_opt(self): - return GnuFCompiler.get_flags_opt(self) + if is_win64(): + return ['-O0'] + else: + return GnuFCompiler.get_flags_opt(self) def _can_target(cmd, arch): """Return true if the architecture supports the -arch flag""" @@ -386,13 +378,9 @@ if __name__ == '__main__': from distutils import log log.set_verbosity(2) - try: - compiler = GnuFCompiler() - compiler.customize() - print(compiler.get_version()) - except Exception: - msg = get_exception() - print(msg) + compiler = GnuFCompiler() + compiler.customize() + print(compiler.get_version()) try: compiler = Gnu95FCompiler() diff --git a/numpy/distutils/mingw32ccompiler.py b/numpy/distutils/mingw32ccompiler.py index f72c3bbbb..d22a2818e 100644 --- a/numpy/distutils/mingw32ccompiler.py +++ b/numpy/distutils/mingw32ccompiler.py @@ -87,30 +87,17 @@ class Mingw32CCompiler(distutils.cygwinccompiler.CygwinCCompiler): elif self.linker_dll == 'gcc': self.linker = 'g++' - p = subprocess.Popen(['gcc', '--version'], shell=True, - stdout=subprocess.PIPE) - out_string = p.stdout.read() - p.stdout.close() - - # Before build with MinGW-W64 generate the python import library - # with gendef and dlltool according to the MingW-W64 FAQ. - # Use the MinGW-W64 provided msvc runtime import libraries. - # Don't call build_import_library() and build_msvcr_library. - - if 'MinGW-W64' not in str(out_string): - - # **changes: eric jones 4/11/01 - # 1. Check for import library on Windows. Build if it doesn't - # exist. - build_import_library() - - # Check for custom msvc runtime library on Windows. Build if it - # doesn't exist. - msvcr_success = build_msvcr_library() - msvcr_dbg_success = build_msvcr_library(debug=True) - if msvcr_success or msvcr_dbg_success: - # add preprocessor statement for using customized msvcr lib - self.define_macro('NPY_MINGW_USE_CUSTOM_MSVCR') + # **changes: eric jones 4/11/01 + # 1. Check for import library on Windows. Build if it doesn't exist. + + build_import_library() + + # Check for custom msvc runtime library on Windows. Build if it doesn't exist. + msvcr_success = build_msvcr_library() + msvcr_dbg_success = build_msvcr_library(debug=True) + if msvcr_success or msvcr_dbg_success: + # add preprocessor statement for using customized msvcr lib + self.define_macro('NPY_MINGW_USE_CUSTOM_MSVCR') # Define the MSVC version as hint for MinGW msvcr_version = '0x%03i0' % int(msvc_runtime_library().lstrip('msvcr')) @@ -131,12 +118,10 @@ class Mingw32CCompiler(distutils.cygwinccompiler.CygwinCCompiler): else: # gcc-4 series releases do not support -mno-cygwin option self.set_executables( - compiler='gcc -march=x86-64 -mtune=generic -DMS_WIN64' - ' -O2 -msse2 -Wall', - compiler_so='gcc -march=x86-64 -mtune=generic -DMS_WIN64' - ' -O2 -msse2 -Wall -Wstrict-prototypes', - linker_exe='gcc', - linker_so='gcc -shared -Wl,-gc-sections -Wl,-s') + compiler='gcc -g -DDEBUG -DMS_WIN64 -O0 -Wall', + compiler_so='gcc -g -DDEBUG -DMS_WIN64 -O0 -Wall -Wstrict-prototypes', + linker_exe='gcc -g', + linker_so='gcc -g -shared') else: if self.gcc_version <= "3.0.0": self.set_executables( @@ -154,21 +139,13 @@ class Mingw32CCompiler(distutils.cygwinccompiler.CygwinCCompiler): linker_exe='g++ -mno-cygwin', linker_so='g++ -mno-cygwin -shared') else: - # gcc-4 series releases do not support -mno-cygwin option i686 - # build needs '-mincoming-stack-boundary=2' due to ABI - # incompatibility to Win32 ABI - self.set_executables( - compiler='gcc -O2 -march=core2 -mtune=generic' - ' -mfpmath=sse -msse2' - ' -mincoming-stack-boundary=2 -Wall', - compiler_so='gcc -O2 -march=core2 -mtune=generic' - ' -mfpmath=sse -msse2' - ' -mincoming-stack-boundary=2 -Wall' - ' -Wstrict-prototypes', - linker_exe='g++ ', - linker_so='g++ -shared -Wl,-gc-sections -Wl,-s') - # added for python2.3 support we can't pass it through set_executables - # because pre 2.2 would fail + # gcc-4 series releases do not support -mno-cygwin option + self.set_executables(compiler='gcc -O2 -Wall', + compiler_so='gcc -O2 -Wall -Wstrict-prototypes', + linker_exe='g++ ', + linker_so='g++ -shared') + # added for python2.3 support + # we can't pass it through set_executables because pre 2.2 would fail self.compiler_cxx = ['g++'] # Maybe we should also append -mthreads, but then the finished dlls diff --git a/numpy/distutils/system_info.py b/numpy/distutils/system_info.py index 9dd48e2dc..0da13a7df 100644 --- a/numpy/distutils/system_info.py +++ b/numpy/distutils/system_info.py @@ -1751,24 +1751,6 @@ class openblas_lapack_info(openblas_info): res = False finally: shutil.rmtree(tmpdir) - if sys.platform == 'win32' and not res: - c = distutils.ccompiler.new_compiler(compiler='mingw32') - tmpdir = tempfile.mkdtemp() - src = os.path.join(tmpdir, 'source.c') - out = os.path.join(tmpdir, 'a.out') - try: - with open(src, 'wt') as f: - f.write(s) - obj = c.compile([src], output_dir=tmpdir) - try: - c.link_executable(obj, out, libraries=info['libraries'], - library_dirs=info['library_dirs'], - extra_postargs=extra_args) - res = True - except distutils.ccompiler.LinkError: - res = False - finally: - shutil.rmtree(tmpdir) return res |
