1*a58d3d2aSXin Lisilk_sources = sources['SILK_SOURCES'] 2*a58d3d2aSXin Li 3*a58d3d2aSXin Lisilk_sources_sse4_1 = sources['SILK_SOURCES_SSE4_1'] 4*a58d3d2aSXin Li 5*a58d3d2aSXin Lisilk_sources_avx2 = sources['SILK_SOURCES_AVX2'] 6*a58d3d2aSXin Li 7*a58d3d2aSXin Lisilk_sources_neon_intr = sources['SILK_SOURCES_ARM_NEON_INTR'] 8*a58d3d2aSXin Li 9*a58d3d2aSXin Lisilk_sources_fixed_neon_intr = sources['SILK_SOURCES_FIXED_ARM_NEON_INTR'] 10*a58d3d2aSXin Li 11*a58d3d2aSXin Lisilk_sources_fixed = sources['SILK_SOURCES_FIXED'] 12*a58d3d2aSXin Li 13*a58d3d2aSXin Lisilk_sources_fixed_sse4_1 = sources['SILK_SOURCES_FIXED_SSE4_1'] 14*a58d3d2aSXin Li 15*a58d3d2aSXin Lisilk_sources_float_sse4_1 = [] 16*a58d3d2aSXin Lisilk_sources_float_neon_intr = [] 17*a58d3d2aSXin Lisilk_sources_float_avx2 = sources['SILK_SOURCES_FLOAT_AVX2'] 18*a58d3d2aSXin Li 19*a58d3d2aSXin Lisilk_sources_float = sources['SILK_SOURCES_FLOAT'] 20*a58d3d2aSXin Li 21*a58d3d2aSXin Liif opt_fixed_point 22*a58d3d2aSXin Li silk_sources += silk_sources_fixed 23*a58d3d2aSXin Lielse 24*a58d3d2aSXin Li silk_sources += silk_sources_float 25*a58d3d2aSXin Liendif 26*a58d3d2aSXin Li 27*a58d3d2aSXin Lisilk_includes = [opus_includes, include_directories('float', 'fixed')] 28*a58d3d2aSXin Lisilk_static_libs = [] 29*a58d3d2aSXin Li 30*a58d3d2aSXin Liif host_cpu_family in ['x86', 'x86_64'] and opus_conf.has('OPUS_HAVE_RTCD') 31*a58d3d2aSXin Li silk_sources += sources['SILK_SOURCES_X86_RTCD'] 32*a58d3d2aSXin Liendif 33*a58d3d2aSXin Li 34*a58d3d2aSXin Liif host_cpu_family in ['arm', 'aarch64'] and have_arm_intrinsics_or_asm 35*a58d3d2aSXin Li if opus_conf.has('OPUS_HAVE_RTCD') 36*a58d3d2aSXin Li silk_sources += sources['SILK_SOURCES_ARM_RTCD'] 37*a58d3d2aSXin Li endif 38*a58d3d2aSXin Liendif 39*a58d3d2aSXin Li 40*a58d3d2aSXin Liforeach intr_name : ['sse4_1', 'avx2', 'neon_intr'] 41*a58d3d2aSXin Li have_intr = get_variable('have_' + intr_name) 42*a58d3d2aSXin Li if not have_intr 43*a58d3d2aSXin Li continue 44*a58d3d2aSXin Li endif 45*a58d3d2aSXin Li 46*a58d3d2aSXin Li intr_sources = get_variable('silk_sources_' + intr_name) 47*a58d3d2aSXin Li if opt_fixed_point 48*a58d3d2aSXin Li intr_sources += get_variable('silk_sources_fixed_' + intr_name) 49*a58d3d2aSXin Li else 50*a58d3d2aSXin Li intr_sources += get_variable('silk_sources_float_' + intr_name) 51*a58d3d2aSXin Li endif 52*a58d3d2aSXin Li 53*a58d3d2aSXin Li intr_args = get_variable('opus_@0@_args'.format(intr_name), []) 54*a58d3d2aSXin Li silk_static_libs += static_library('silk_' + intr_name, intr_sources, 55*a58d3d2aSXin Li c_args: intr_args, 56*a58d3d2aSXin Li include_directories: silk_includes, 57*a58d3d2aSXin Li install: false) 58*a58d3d2aSXin Liendforeach 59*a58d3d2aSXin Li 60*a58d3d2aSXin Lisilk_c_args = [] 61*a58d3d2aSXin Liif host_machine.system() == 'windows' 62*a58d3d2aSXin Li silk_c_args += ['-DDLL_EXPORT'] 63*a58d3d2aSXin Liendif 64*a58d3d2aSXin Li 65*a58d3d2aSXin Lisilk_lib = static_library('opus-silk', 66*a58d3d2aSXin Li silk_sources, 67*a58d3d2aSXin Li c_args: silk_c_args, 68*a58d3d2aSXin Li include_directories: silk_includes, 69*a58d3d2aSXin Li link_whole: [silk_static_libs], 70*a58d3d2aSXin Li dependencies: libm, 71*a58d3d2aSXin Li install: false) 72