|
1 | | -add_local_sources(sof |
2 | | - eq_iir.c |
3 | | - iir.c |
4 | | - eq_fir.c |
5 | | - fir.c |
6 | | - fir_hifi2ep.c |
7 | | - fir_hifi3.c |
8 | | - tone.c |
9 | | - src.c |
10 | | - src_generic.c |
11 | | - src_hifi2ep.c |
12 | | - src_hifi3.c |
13 | | - mixer.c |
14 | | - mux.c |
15 | | - volume.c |
16 | | - volume_generic.c |
17 | | - volume_hifi3.c |
18 | | - switch.c |
| 1 | +if(NOT BUILD_HOST) |
| 2 | + add_local_sources(sof |
| 3 | + eq_iir.c |
| 4 | + iir.c |
| 5 | + eq_fir.c |
| 6 | + fir.c |
| 7 | + fir_hifi2ep.c |
| 8 | + fir_hifi3.c |
| 9 | + tone.c |
| 10 | + src.c |
| 11 | + src_generic.c |
| 12 | + src_hifi2ep.c |
| 13 | + src_hifi3.c |
| 14 | + mixer.c |
| 15 | + mux.c |
| 16 | + volume.c |
| 17 | + volume_generic.c |
| 18 | + volume_hifi3.c |
| 19 | + switch.c |
| 20 | + dai.c |
| 21 | + host.c |
| 22 | + pipeline.c |
| 23 | + pipeline_static.c |
| 24 | + component.c |
| 25 | + buffer.c |
| 26 | + ) |
| 27 | + return() |
| 28 | +endif() |
| 29 | + |
| 30 | +add_library(sof_audio_core SHARED "") |
| 31 | +target_link_libraries(sof_audio_core PRIVATE sof_options) |
| 32 | +target_link_libraries(sof_audio_core PRIVATE -Wl,--export-dynamic) |
| 33 | +add_local_sources(sof_audio_core |
19 | 34 | dai.c |
20 | 35 | host.c |
21 | 36 | pipeline.c |
22 | | - pipeline_static.c |
23 | 37 | component.c |
24 | 38 | buffer.c |
25 | 39 | ) |
| 40 | + |
| 41 | +install(TARGETS sof_audio_core DESTINATION lib) |
| 42 | + |
| 43 | +# Audio Modules with various optimizaitons |
| 44 | + |
| 45 | +# add rules for module compilation and installation |
| 46 | +function(sof_audio_add_module lib_name compile_flags) |
| 47 | + add_library(${lib_name} MODULE "") |
| 48 | + target_link_libraries(${lib_name} PRIVATE sof_options) |
| 49 | + target_link_libraries(${lib_name} PRIVATE -Wl,--export-dynamic) |
| 50 | + target_compile_options(${lib_name} PRIVATE ${compile_flags}) |
| 51 | + add_local_sources(${lib_name} ${ARGN}) |
| 52 | + install(TARGETS ${lib_name} DESTINATION lib) |
| 53 | +endfunction() |
| 54 | + |
| 55 | +include(CheckCCompilerFlag) |
| 56 | + |
| 57 | +set(available_optimizations) |
| 58 | + |
| 59 | +# checks if flag is supported by compiler and sets needed flags |
| 60 | +macro(check_optimization opt_name flag extra_define) |
| 61 | + check_c_compiler_flag(${flag} compiles_flag_${opt_name}) |
| 62 | + if(compiles_flag_${opt_name}) |
| 63 | + list(APPEND available_optimizations ${opt_name}) |
| 64 | + set(${opt_name}_flags ${flag} ${extra_define} -ffast-math -ftree-vectorizer-verbose=0) |
| 65 | + endif() |
| 66 | +endmacro() |
| 67 | + |
| 68 | +# modules will be compiled only for flags supported by compiler |
| 69 | +check_optimization(sse42 -msse4.2 -DOPS_SSE42) |
| 70 | +check_optimization(avx -mavx -DOPS_AVX) |
| 71 | +check_optimization(avx2 -mavx2 -DOPS_AVX2) |
| 72 | +check_optimization(fma -mfma -DOPS_FMA) |
| 73 | +check_optimization(hifi2ep -mhifi2ep -DOPS_HIFI2EP) |
| 74 | +check_optimization(hifi3 -mhifi3 -DOPS_HIFI3) |
| 75 | + |
| 76 | +set(sof_audio_modules volume src) |
| 77 | + |
| 78 | +# sources for each module |
| 79 | +set(volume_sources volume.c volume_generic.c) |
| 80 | +set(src_sources src.c src_generic.c) |
| 81 | + |
| 82 | +foreach(audio_module ${sof_audio_modules}) |
| 83 | + # first compile with no optimizations |
| 84 | + sof_audio_add_module(sof_${audio_module} "" ${${audio_module}_sources}) |
| 85 | + |
| 86 | + # compile for each optimization |
| 87 | + foreach(opt ${available_optimizations}) |
| 88 | + sof_audio_add_module(sof_${audio_module}_${opt} "${${opt}_flags}" ${${audio_module}_sources}) |
| 89 | + endforeach() |
| 90 | +endforeach() |
0 commit comments