| Viewing file:  build.py (2.55 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
import osimport sys
 from distutils.command.build import build as old_build
 from distutils.util import get_platform
 from numpy.distutils.command.config_compiler import show_fortran_compilers
 
 class build(old_build):
 
 sub_commands = [('config_cc',     lambda *args: True),
 ('config_fc',     lambda *args: True),
 ('build_src',     old_build.has_ext_modules),
 ] + old_build.sub_commands
 
 user_options = old_build.user_options + [
 ('fcompiler=', None,
 "specify the Fortran compiler type"),
 ('warn-error', None,
 "turn all warnings into errors (-Werror)"),
 ('cpu-baseline=', None,
 "specify a list of enabled baseline CPU optimizations"),
 ('cpu-dispatch=', None,
 "specify a list of dispatched CPU optimizations"),
 ('disable-optimization', None,
 "disable CPU optimized code(dispatch,simd,fast...)"),
 ('simd-test=', None,
 "specify a list of CPU optimizations to be tested against NumPy SIMD interface"),
 ]
 
 help_options = old_build.help_options + [
 ('help-fcompiler', None, "list available Fortran compilers",
 show_fortran_compilers),
 ]
 
 def initialize_options(self):
 old_build.initialize_options(self)
 self.fcompiler = None
 self.warn_error = False
 self.cpu_baseline = "min"
 self.cpu_dispatch = "max -xop -fma4" # drop AMD legacy features by default
 self.disable_optimization = False
 """
 the '_simd' module is a very large. Adding more dispatched features
 will increase binary size and compile time. By default we minimize
 the targeted features to those most commonly used by the NumPy SIMD interface(NPYV),
 NOTE: any specified features will be ignored if they're:
 - part of the baseline(--cpu-baseline)
 - not part of dispatch-able features(--cpu-dispatch)
 - not supported by compiler or platform
 """
 self.simd_test = "BASELINE SSE2 SSE42 XOP FMA4 (FMA3 AVX2) AVX512F " \
 "AVX512_SKX VSX VSX2 VSX3 VSX4 NEON ASIMD VX VXE VXE2"
 
 def finalize_options(self):
 build_scripts = self.build_scripts
 old_build.finalize_options(self)
 plat_specifier = ".{}-{}.{}".format(get_platform(), *sys.version_info[:2])
 if build_scripts is None:
 self.build_scripts = os.path.join(self.build_base,
 'scripts' + plat_specifier)
 
 def run(self):
 old_build.run(self)
 
 |