Source: botan Version: 2.4.0-1 Followup-For: Bug #893372 I've tested the patch on abel.d.o. The patch is also attached to this report and for a few days the compiled version is on abel.d.o:~adamm/botan-2.4.0
- Adam
commit 67652aed9d0240dfee628a9a67f204d468df90d4 Author: Jack Lloyd <j...@randombit.net> Date: Sun Mar 18 11:10:23 2018 -0400 Fix --disable-{neon,sse2,altivec} for simd_32 users Using --disable-neon was not effective because simd_32 users had special logic that would still enable it. Index: botan-2.4.0/configure.py =================================================================== --- botan-2.4.0.orig/configure.py +++ botan-2.4.0/configure.py @@ -1086,12 +1086,14 @@ class CompilerInfo(InfoObject): # pylint return self.isa_flags[arch_isa] return None - def get_isa_specific_flags(self, isas, arch): + def get_isa_specific_flags(self, isas, arch, options): flags = set() def simd32_impl(): for simd_isa in ['sse2', 'altivec', 'neon']: - if simd_isa in arch.isa_extensions and self.isa_flags_for(simd_isa, arch.basename): + if simd_isa in arch.isa_extensions and \ + simd_isa not in options.disable_intrinsics and \ + self.isa_flags_for(simd_isa, arch.basename): return simd_isa return None @@ -1586,7 +1588,7 @@ def yield_objectfile_list(sources, obj_d name = name.replace('.cpp', obj_suffix) yield os.path.join(obj_dir, name) -def generate_build_info(build_paths, modules, cc, arch, osinfo): +def generate_build_info(build_paths, modules, cc, arch, osinfo, options): # pylint: disable=too-many-locals # first create a map of src_file->owning module @@ -1599,7 +1601,7 @@ def generate_build_info(build_paths, mod def _isa_specific_flags(src): if os.path.basename(src) == 'test_simd.cpp': - return cc.get_isa_specific_flags(['simd'], arch) + return cc.get_isa_specific_flags(['simd'], arch, options) if src in module_that_owns: module = module_that_owns[src] @@ -1607,11 +1609,11 @@ def generate_build_info(build_paths, mod if 'simd' in module.dependencies(): isas.append('simd') - return cc.get_isa_specific_flags(isas, arch) + return cc.get_isa_specific_flags(isas, arch, options) if src.startswith('botan_all_'): isas = src.replace('botan_all_', '').replace('.cpp', '').split('_') - return cc.get_isa_specific_flags(isas, arch) + return cc.get_isa_specific_flags(isas, arch, options) return '' @@ -2931,7 +2933,7 @@ def main_action_configure_build(info_mod build_config.lib_sources = amalg_cpp_files template_vars['generated_files'] = ' '.join(amalg_cpp_files + amalg_headers) - template_vars.update(generate_build_info(build_config, using_mods, cc, arch, osinfo)) + template_vars.update(generate_build_info(build_config, using_mods, cc, arch, osinfo, options)) with open(os.path.join(build_config.build_dir, 'build_config.json'), 'w') as f: json.dump(template_vars, f, sort_keys=True, indent=2)