You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							63 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							63 lines
						
					
					
						
							2.6 KiB
						
					
					
				import os
 | 
						|
import 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)
 |