cc = meson.get_compiler('c') native_arch_args = [] cpu = host_machine.cpu_family() if cpu == 'x86_64' foreach arg : ['-mavx2', '-mbmi2'] if cc.has_argument(arg) native_arch_args += arg endif endforeach elif cpu == 'aarch64' if cc.has_argument('-march=armv8.4-a+sha3') native_arch_args += '-march=armv8.4-a+sha3' endif endif contrib_config_inc = include_directories('config') pqc_c_args = [ '-O3', '-ffreestanding', '-fno-stack-protector', # no libc: don't emit __stack_chk_fail references '-fomit-frame-pointer', ] + native_arch_args mlkem_inc = include_directories('mlkem-native') mlkem_config_arg = '-DMLK_CONFIG_FILE="circe_mlkem_config.h"' mlkem_lib = static_library( 'circe-mlkem', [ 'mlkem-native/mlkem/mlkem_native.c', 'mlkem-native/mlkem/mlkem_native_asm.S', ], c_args: pqc_c_args + [mlkem_config_arg], include_directories: [mlkem_inc, contrib_config_inc], dependencies: [common_dep], ) mlkem_dep = declare_dependency( link_with: mlkem_lib, include_directories: [mlkem_inc, contrib_config_inc], compile_args: [mlkem_config_arg], dependencies: [common_dep], ) set_variable(meson.project_name() + '_mlkem_dep', mlkem_dep) mldsa_inc = include_directories('mldsa-native') mldsa_config_arg = '-DMLD_CONFIG_FILE="circe_mldsa_config.h"' mldsa_lib = static_library( 'circe-mldsa', [ 'mldsa-native/mldsa/mldsa_native.c', 'mldsa-native/mldsa/mldsa_native_asm.S', ], c_args: pqc_c_args + [mldsa_config_arg], include_directories: [mldsa_inc, contrib_config_inc], dependencies: [common_dep], ) mldsa_dep = declare_dependency( link_with: mldsa_lib, include_directories: [mldsa_inc, contrib_config_inc], compile_args: [mldsa_config_arg], dependencies: [common_dep], ) set_variable(meson.project_name() + '_mldsa_dep', mldsa_dep)