diff options
author | lloyd <[email protected]> | 2014-01-26 00:23:13 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2014-01-26 00:23:13 +0000 |
commit | 4f8afd8dc67b0f34d93a105df078644f1c762878 (patch) | |
tree | 5bdcbe7a1bda6797d5b45a445bc992f657356e93 | |
parent | f5bd8adc44701a37204a6748089c2ee11a5a781d (diff) |
If the build compiler doesn't support intrinsics we need, disable the module
rather than causing the whole build to fail. Also mark MSVC as supporting
intrinsics (except AVX2 which seemingly is not yet supported). Github issue 7.
-rwxr-xr-x | configure.py | 20 | ||||
-rw-r--r-- | src/build-data/cc/msvc.txt | 12 |
2 files changed, 27 insertions, 5 deletions
diff --git a/configure.py b/configure.py index f3125d77e..4b350742e 100755 --- a/configure.py +++ b/configure.py @@ -676,8 +676,15 @@ class ModuleInfo(object): def compatible_os(self, os): return self.os == [] or os in self.os - def compatible_compiler(self, cc): - return self.cc == [] or cc in self.cc + def compatible_compiler(self, ccinfo, cc): + if self.cc != [] and cc not in self.cc: + return False + + for isa in self.need_isa: + if isa not in ccinfo.isa_flags: + return False + + return True def dependencies(self): # utils is an implicit dep (contains types, etc) @@ -1328,7 +1335,7 @@ def create_template_vars(build_config, options, modules, cc, arch, osinfo): """ Determine which modules to load based on options, target, etc """ -def choose_modules_to_use(modules, archinfo, options): +def choose_modules_to_use(modules, archinfo, ccinfo, options): for mod in modules.values(): mod.dependencies_exist(modules) @@ -1356,7 +1363,7 @@ def choose_modules_to_use(modules, archinfo, options): elif not module.compatible_os(options.os): cannot_use_because(modname, 'incompatible OS') - elif not module.compatible_compiler(options.compiler): + elif not module.compatible_compiler(ccinfo, options.compiler): cannot_use_because(modname, 'incompatible compiler') elif not module.compatible_cpu(archinfo, options): cannot_use_because(modname, 'incompatible CPU') @@ -1916,7 +1923,10 @@ def main(argv = None): logging.info('Disabling assembly code, cannot use in amalgamation') options.asm_ok = False - loaded_mods = choose_modules_to_use(modules, archinfo[options.arch], options) + loaded_mods = choose_modules_to_use(modules, + archinfo[options.arch], + cc, + options) if not osinfo[options.os].build_shared: if options.build_shared_lib: diff --git a/src/build-data/cc/msvc.txt b/src/build-data/cc/msvc.txt index 93dcdcb50..9897895d4 100644 --- a/src/build-data/cc/msvc.txt +++ b/src/build-data/cc/msvc.txt @@ -21,6 +21,18 @@ ar_command lib makefile_style nmake +<isa_flags> +sse2 -> "" +ssse3 -> "" +sse4.1 -> "" +sse4.2 -> "" +#avx2 -> "" +bmi2 -> "" +aesni -> "" +clmul -> "" +rdrand -> "" +</isa_flags> + <so_link_flags> default -> "$(CXX) /LD" </so_link_flags> |