summaryrefslogtreecommitdiffstats
path: root/venv/lib/python3.9/site-packages/numpy/distutils/msvc9compiler.py
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.9/site-packages/numpy/distutils/msvc9compiler.py')
-rw-r--r--venv/lib/python3.9/site-packages/numpy/distutils/msvc9compiler.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/venv/lib/python3.9/site-packages/numpy/distutils/msvc9compiler.py b/venv/lib/python3.9/site-packages/numpy/distutils/msvc9compiler.py
new file mode 100644
index 00000000..68239495
--- /dev/null
+++ b/venv/lib/python3.9/site-packages/numpy/distutils/msvc9compiler.py
@@ -0,0 +1,63 @@
+import os
+from distutils.msvc9compiler import MSVCCompiler as _MSVCCompiler
+
+from .system_info import platform_bits
+
+
+def _merge(old, new):
+ """Concatenate two environment paths avoiding repeats.
+
+ Here `old` is the environment string before the base class initialize
+ function is called and `new` is the string after the call. The new string
+ will be a fixed string if it is not obtained from the current environment,
+ or the same as the old string if obtained from the same environment. The aim
+ here is not to append the new string if it is already contained in the old
+ string so as to limit the growth of the environment string.
+
+ Parameters
+ ----------
+ old : string
+ Previous environment string.
+ new : string
+ New environment string.
+
+ Returns
+ -------
+ ret : string
+ Updated environment string.
+
+ """
+ if not old:
+ return new
+ if new in old:
+ return old
+
+ # Neither new nor old is empty. Give old priority.
+ return ';'.join([old, new])
+
+
+class MSVCCompiler(_MSVCCompiler):
+ def __init__(self, verbose=0, dry_run=0, force=0):
+ _MSVCCompiler.__init__(self, verbose, dry_run, force)
+
+ def initialize(self, plat_name=None):
+ # The 'lib' and 'include' variables may be overwritten
+ # by MSVCCompiler.initialize, so save them for later merge.
+ environ_lib = os.getenv('lib')
+ environ_include = os.getenv('include')
+ _MSVCCompiler.initialize(self, plat_name)
+
+ # Merge current and previous values of 'lib' and 'include'
+ os.environ['lib'] = _merge(environ_lib, os.environ['lib'])
+ os.environ['include'] = _merge(environ_include, os.environ['include'])
+
+ # msvc9 building for 32 bits requires SSE2 to work around a
+ # compiler bug.
+ if platform_bits == 32:
+ self.compile_options += ['/arch:SSE2']
+ self.compile_options_debug += ['/arch:SSE2']
+
+ def manifest_setup_ldargs(self, output_filename, build_temp, ld_args):
+ ld_args.append('/MANIFEST')
+ _MSVCCompiler.manifest_setup_ldargs(self, output_filename,
+ build_temp, ld_args)