1*a58d3d2aSXin Licelt_sources = sources['CELT_SOURCES'] 2*a58d3d2aSXin Li 3*a58d3d2aSXin Licelt_sse_sources = sources['CELT_SOURCES_SSE'] 4*a58d3d2aSXin Li 5*a58d3d2aSXin Licelt_sse2_sources = sources['CELT_SOURCES_SSE2'] 6*a58d3d2aSXin Li 7*a58d3d2aSXin Licelt_sse4_1_sources = sources['CELT_SOURCES_SSE4_1'] 8*a58d3d2aSXin Li 9*a58d3d2aSXin Licelt_avx2_sources = sources['CELT_SOURCES_AVX2'] 10*a58d3d2aSXin Li 11*a58d3d2aSXin Licelt_neon_intr_sources = sources['CELT_SOURCES_ARM_NEON_INTR'] 12*a58d3d2aSXin Li 13*a58d3d2aSXin Licelt_static_libs = [] 14*a58d3d2aSXin Li 15*a58d3d2aSXin Liif host_cpu_family in ['x86', 'x86_64'] and opus_conf.has('OPUS_HAVE_RTCD') 16*a58d3d2aSXin Li celt_sources += sources['CELT_SOURCES_X86_RTCD'] 17*a58d3d2aSXin Liendif 18*a58d3d2aSXin Li 19*a58d3d2aSXin Liforeach intr_name : ['sse', 'sse2', 'sse4_1', 'avx2', 'neon_intr'] 20*a58d3d2aSXin Li have_intr = get_variable('have_' + intr_name) 21*a58d3d2aSXin Li if not have_intr 22*a58d3d2aSXin Li continue 23*a58d3d2aSXin Li endif 24*a58d3d2aSXin Li 25*a58d3d2aSXin Li intr_sources = get_variable('celt_@0@_sources'.format(intr_name)) 26*a58d3d2aSXin Li intr_args = get_variable('opus_@0@_args'.format(intr_name), []) 27*a58d3d2aSXin Li celt_static_libs += static_library('celt_' + intr_name, intr_sources, 28*a58d3d2aSXin Li c_args: intr_args, 29*a58d3d2aSXin Li include_directories: opus_includes, 30*a58d3d2aSXin Li install: false) 31*a58d3d2aSXin Liendforeach 32*a58d3d2aSXin Li 33*a58d3d2aSXin Lihave_arm_intrinsics_or_asm = have_arm_ne10 34*a58d3d2aSXin Liif (intrinsics_support.length() + asm_optimization.length() + inline_optimization.length()) > 0 35*a58d3d2aSXin Li have_arm_intrinsics_or_asm = true 36*a58d3d2aSXin Liendif 37*a58d3d2aSXin Li 38*a58d3d2aSXin Liif host_cpu_family in ['arm', 'aarch64'] and have_arm_intrinsics_or_asm 39*a58d3d2aSXin Li if opus_conf.has('OPUS_HAVE_RTCD') 40*a58d3d2aSXin Li celt_sources += sources['CELT_SOURCES_ARM_RTCD'] 41*a58d3d2aSXin Li endif 42*a58d3d2aSXin Li if have_arm_ne10 43*a58d3d2aSXin Li celt_sources += sources['CELT_SOURCES_ARM_NE10'] 44*a58d3d2aSXin Li endif 45*a58d3d2aSXin Li if opus_arm_external_asm 46*a58d3d2aSXin Li arm2gnu = [find_program('arm/arm2gnu.pl')] + arm2gnu_args 47*a58d3d2aSXin Li celt_sources_arm_asm = configure_file(input: 'arm/celt_pitch_xcorr_arm.s', 48*a58d3d2aSXin Li output: '@[email protected]', 49*a58d3d2aSXin Li command: arm2gnu + ['@INPUT@'], 50*a58d3d2aSXin Li capture: true) 51*a58d3d2aSXin Li celt_arm_armopts_s = configure_file(input: 'arm/armopts.s.in', 52*a58d3d2aSXin Li output: 'arm/armopts.s', 53*a58d3d2aSXin Li configuration: opus_conf) 54*a58d3d2aSXin Li celt_static_libs += static_library('celt-armasm', 55*a58d3d2aSXin Li celt_arm_armopts_s, celt_sources_arm_asm, 56*a58d3d2aSXin Li install: false) 57*a58d3d2aSXin Li endif 58*a58d3d2aSXin Liendif 59*a58d3d2aSXin Li 60*a58d3d2aSXin Licelt_c_args = [] 61*a58d3d2aSXin Liif host_system == 'windows' 62*a58d3d2aSXin Li celt_c_args += ['-DDLL_EXPORT'] 63*a58d3d2aSXin Liendif 64*a58d3d2aSXin Li 65*a58d3d2aSXin Licelt_lib = static_library('opus-celt', 66*a58d3d2aSXin Li celt_sources, 67*a58d3d2aSXin Li c_args: celt_c_args, 68*a58d3d2aSXin Li include_directories: opus_includes, 69*a58d3d2aSXin Li link_whole: celt_static_libs, 70*a58d3d2aSXin Li dependencies: libm, 71*a58d3d2aSXin Li install: false) 72