1*61046927SAndroid Build Coastguard Workerfiles_blake3 = [ 2*61046927SAndroid Build Coastguard Worker 'blake3.c', 3*61046927SAndroid Build Coastguard Worker 'blake3_dispatch.c', 4*61046927SAndroid Build Coastguard Worker 'blake3_portable.c' 5*61046927SAndroid Build Coastguard Worker] 6*61046927SAndroid Build Coastguard Workerblake3_defs = [] 7*61046927SAndroid Build Coastguard Worker 8*61046927SAndroid Build Coastguard Workeris_windows = host_machine.system() == 'windows' 9*61046927SAndroid Build Coastguard Workeris_msvc = meson.get_compiler('c').get_id() == 'msvc' 10*61046927SAndroid Build Coastguard Workercpu_family = host_machine.cpu_family() 11*61046927SAndroid Build Coastguard Worker 12*61046927SAndroid Build Coastguard Workerblake3_x86_no_simd_defs = ['-DBLAKE3_NO_SSE2', '-DBLAKE3_NO_SSE41', '-DBLAKE3_NO_AVX2', '-DBLAKE3_NO_AVX512'] 13*61046927SAndroid Build Coastguard Worker 14*61046927SAndroid Build Coastguard Workerif cpu_family == 'x86_64' 15*61046927SAndroid Build Coastguard Worker if is_windows 16*61046927SAndroid Build Coastguard Worker if is_msvc 17*61046927SAndroid Build Coastguard Worker # An up-to-date version of Meson, not using the VS backend is needed. 18*61046927SAndroid Build Coastguard Worker # See https://github.com/mesonbuild/meson/issues/11653 19*61046927SAndroid Build Coastguard Worker if meson.backend() == 'ninja' and add_languages('masm', required : false) 20*61046927SAndroid Build Coastguard Worker files_blake3 += ['blake3_sse2_x86-64_windows_msvc.masm', 'blake3_sse41_x86-64_windows_msvc.masm', 'blake3_avx2_x86-64_windows_msvc.masm', 'blake3_avx512_x86-64_windows_msvc.masm'] 21*61046927SAndroid Build Coastguard Worker else 22*61046927SAndroid Build Coastguard Worker blake3_defs += blake3_x86_no_simd_defs 23*61046927SAndroid Build Coastguard Worker endif 24*61046927SAndroid Build Coastguard Worker else 25*61046927SAndroid Build Coastguard Worker files_blake3 += ['blake3_sse2_x86-64_windows_gnu.S', 'blake3_sse41_x86-64_windows_gnu.S', 'blake3_avx2_x86-64_windows_gnu.S', 'blake3_avx512_x86-64_windows_gnu.S'] 26*61046927SAndroid Build Coastguard Worker endif 27*61046927SAndroid Build Coastguard Worker else 28*61046927SAndroid Build Coastguard Worker files_blake3 += ['blake3_sse2_x86-64_unix.S', 'blake3_sse41_x86-64_unix.S', 'blake3_avx2_x86-64_unix.S', 'blake3_avx512_x86-64_unix.S'] 29*61046927SAndroid Build Coastguard Worker endif 30*61046927SAndroid Build Coastguard Workerelif cpu_family == 'x86' 31*61046927SAndroid Build Coastguard Worker # There are no assembly versions for 32-bit x86. Compiling the C versions require a different compilation flag per 32*61046927SAndroid Build Coastguard Worker # file, which is not well supported by Meson. Leave SIMD support out for now. 33*61046927SAndroid Build Coastguard Worker blake3_defs += blake3_x86_no_simd_defs 34*61046927SAndroid Build Coastguard Workerelif cpu_family == 'aarch64' 35*61046927SAndroid Build Coastguard Worker files_blake3 += ['blake3_neon.c'] 36*61046927SAndroid Build Coastguard Workerendif 37*61046927SAndroid Build Coastguard Worker 38*61046927SAndroid Build Coastguard Workerblake3 = static_library( 39*61046927SAndroid Build Coastguard Worker 'blake3', 40*61046927SAndroid Build Coastguard Worker files_blake3, 41*61046927SAndroid Build Coastguard Worker c_args : blake3_defs, 42*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility : 'hidden', 43*61046927SAndroid Build Coastguard Worker) 44*61046927SAndroid Build Coastguard Worker 45*61046927SAndroid Build Coastguard Workeridep_blake3 = declare_dependency( 46*61046927SAndroid Build Coastguard Worker link_with : blake3, 47*61046927SAndroid Build Coastguard Worker) 48