|
1 | | -cmake_minimum_required(VERSION 3.6) |
| 1 | +cmake_minimum_required(VERSION 3.28) |
2 | 2 |
|
3 | 3 | project (iamf) |
4 | | -message(STATUS "start build iamf") |
| 4 | +message(STATUS "Start build libiamf") |
5 | 5 |
|
6 | | -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -Werror=unused-variable") |
7 | | -SET(CMAKE_POSITION_INDEPENDENT_CODE ON) |
8 | | - |
9 | | -option(BUILD_SHARED_LIBS "Build shared library" ON) |
| 6 | +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") |
| 7 | +if(NOT MSVC) |
| 8 | + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=unused-variable") |
| 9 | +endif() |
| 10 | +set(CMAKE_POSITION_INDEPENDENT_CODE ON) |
10 | 11 |
|
11 | | -set(CODEC_LIB_DIR "${PROJECT_SOURCE_DIR}/dep_codecs/lib") |
12 | | -set(CODEC_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/dep_codecs/include") |
13 | | -set(EXTER_LIB_DIR "${PROJECT_SOURCE_DIR}/dep_external/lib") |
14 | | -set(EXTER_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/dep_external/include") |
| 12 | +set(DEP_CODECS_DIR "${PROJECT_SOURCE_DIR}/dep_codecs") |
| 13 | +set(DEP_EXTERNAL_DIR "${PROJECT_SOURCE_DIR}/dep_external") |
15 | 14 |
|
| 15 | +option(IAMF_BUILD_SHARED_LIB "Build shared library" ON) |
| 16 | +option(IAMF_ENABLE_BINAURALIZER "Enable binaural rendering" ON) |
| 17 | +option(ENABLE_BUILD_CODECS "Build all codecs" ON) |
| 18 | +option(IAMF_TEST_TOOL "IAMF test tool" OFF) |
16 | 19 | option(SUPPORT_VERIFIER "Output vlogging file" OFF) |
| 20 | + |
17 | 21 | if (SUPPORT_VERIFIER) |
18 | | - message(STATUS "Output vlogging file") |
19 | | - add_definitions(-DSUPPORT_VERIFIER=1) |
| 22 | + message(STATUS "Output vlogging file") |
| 23 | + add_definitions(-DSUPPORT_VERIFIER=1) |
20 | 24 | endif() |
21 | 25 |
|
22 | | -option(CODEC_CAP "Codec capability check" ON) |
23 | | -option(MULTICHANNEL_BINAURALIZER "Enable multichannel binaural rendering" OFF) |
24 | | -option(HOA_BINAURALIZER "Enable HOA binaural rendering" OFF) |
25 | | - |
26 | 26 | if (CMAKE_BUILD_TYPE) |
27 | | - string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE) |
28 | | - if ("${BUILD_TYPE}" STREQUAL "debug") |
29 | | - add_definitions(-DIA_DBG) |
30 | | - message(STATUS "Debug mode.") |
31 | | - endif() |
32 | | -endif() |
33 | | - |
34 | | -if(MULTICHANNEL_BINAURALIZER) |
35 | | - message(STATUS "Enable multichannel binaural rendering") |
36 | | - add_definitions(-DENABLE_MULTICHANNEL_TO_BINAURAL=1) |
| 27 | + string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE) |
| 28 | + if ("${BUILD_TYPE}" STREQUAL "debug") |
| 29 | + add_definitions(-DIA_DBG) |
| 30 | + message(STATUS "Debug mode") |
| 31 | + endif() |
37 | 32 | endif() |
38 | 33 |
|
39 | | -if(HOA_BINAURALIZER) |
40 | | - message(STATUS "Enable HOA binaural rendering") |
41 | | - add_definitions(-DENABLE_HOA_TO_BINAURAL=1) |
42 | | -endif() |
43 | | - |
44 | | -if(CODEC_CAP) |
45 | | - unset(find_opus CACHE) |
46 | | - find_library(find_opus NAMES opus PATHS ${CODEC_LIB_DIR} NO_DEFAULT_PATH) |
47 | | - if(${find_opus} STREQUAL "find_opus-NOTFOUND") |
48 | | - message(WARNING "the opus library was not found") |
49 | | - else() |
50 | | - add_definitions(-DCONFIG_OPUS_CODEC) |
51 | | - endif() |
52 | | - |
53 | | - unset(find_aac CACHE) |
54 | | - find_library(find_aac NAMES fdk-aac PATHS ${CODEC_LIB_DIR} NO_DEFAULT_PATH) |
55 | | - if(${find_aac} STREQUAL "find_aac-NOTFOUND") |
56 | | - message(WARNING "the fdk-aac library was not found") |
57 | | - else() |
58 | | - add_definitions(-DCONFIG_AAC_CODEC) |
59 | | - endif() |
60 | | - |
61 | | - unset(find_flac CACHE) |
62 | | - find_library(find_flac NAMES FLAC PATHS ${CODEC_LIB_DIR} NO_DEFAULT_PATH) |
63 | | - if(${find_flac} STREQUAL "find_flac-NOTFOUND") |
64 | | - message(WARNING "the FLAC library was not found") |
65 | | - else() |
66 | | - add_definitions(-DCONFIG_FLAC_CODEC) |
67 | | - if(CMAKE_SYSTEM_NAME MATCHES "Windows") |
| 34 | +if (ENABLE_BUILD_CODECS) |
| 35 | + add_subdirectory(dep_codecs) |
| 36 | + add_definitions(-DCONFIG_OPUS_CODEC -DCONFIG_AAC_CODEC -DCONFIG_FLAC_CODEC) |
| 37 | + if(MSVC) |
68 | 38 | add_definitions(-DFLAC__NO_DLL) |
69 | | - endif() |
70 | | - endif() |
| 39 | + endif() |
| 40 | +else() |
| 41 | + unset(find_opus CACHE) |
| 42 | + find_library(find_opus NAMES opus PATHS ${DEP_CODECS_DIR}/lib NO_DEFAULT_PATH) |
| 43 | + if(${find_opus} STREQUAL "find_opus-NOTFOUND") |
| 44 | + message(STATUS "The opus library was not found") |
| 45 | + else() |
| 46 | + add_definitions(-DCONFIG_OPUS_CODEC) |
| 47 | + endif() |
| 48 | + |
| 49 | + unset(find_aac CACHE) |
| 50 | + find_library(find_aac NAMES fdk-aac PATHS ${DEP_CODECS_DIR}/lib NO_DEFAULT_PATH) |
| 51 | + if(${find_aac} STREQUAL "find_aac-NOTFOUND") |
| 52 | + message(STATUS "The aac library was not found") |
| 53 | + else() |
| 54 | + add_definitions(-DCONFIG_AAC_CODEC) |
| 55 | + endif() |
| 56 | + |
| 57 | + unset(find_flac CACHE) |
| 58 | + find_library(find_flac NAMES FLAC PATHS ${DEP_CODECS_DIR}/lib NO_DEFAULT_PATH) |
| 59 | + if(${find_flac} STREQUAL "find_flac-NOTFOUND") |
| 60 | + message(STATUS "The flac library was not found") |
| 61 | + else() |
| 62 | + add_definitions(-DCONFIG_FLAC_CODEC) |
| 63 | + if(MSVC) |
| 64 | + add_definitions(-DFLAC__NO_DLL) |
| 65 | + endif() |
| 66 | + endif() |
71 | 67 | endif() |
72 | 68 |
|
73 | | -include_directories (include) |
74 | | -aux_source_directory (dep_external/src/wav DIR_DEP_EXTERNAL_WAV) |
75 | | -aux_source_directory (src/common DIR_IAMF_COMMON) |
76 | | -aux_source_directory (src/iamf_dec DIR_IAMF_DEC) |
77 | | -aux_source_directory (src/iamf_dec/arch DIR_IAMF_DEC_ARCH) |
78 | | -aux_source_directory (src/iamf_dec/arch/arm DIR_IAMF_DEC_ARCH_ARM) |
79 | | -aux_source_directory (src/iamf_dec/arch/x86 DIR_IAMF_DEC_ARCH_X86) |
80 | | -if(NOT ${find_opus} STREQUAL "find_opus-NOTFOUND") |
81 | | - aux_source_directory (src/iamf_dec/opus DIR_IAMF_DEC_OPUS) |
82 | | -endif() |
83 | | -if(NOT ${find_aac} STREQUAL "find_aac-NOTFOUND") |
84 | | - aux_source_directory (src/iamf_dec/aac DIR_IAMF_DEC_AAC) |
85 | | -endif() |
86 | | -if(NOT ${find_flac} STREQUAL "find_flac-NOTFOUND") |
87 | | - aux_source_directory (src/iamf_dec/flac DIR_IAMF_DEC_FLAC) |
| 69 | +if (IAMF_ENABLE_BINAURALIZER) |
| 70 | + set(OAR_ENABLE_BINAURALIZER ON) |
| 71 | +else() |
| 72 | + set(OAR_ENABLE_BINAURALIZER OFF) |
88 | 73 | endif() |
89 | | -aux_source_directory (src/iamf_dec/pcm DIR_IAMF_DEC_PCM) |
90 | | - |
| 74 | +set(OAR_BUILD_SHARED_LIBRARY OFF) |
| 75 | +add_subdirectory(dep_external/src/oar-private/liboar) |
91 | 76 |
|
| 77 | +file(GLOB_RECURSE sources CONFIGURE_DEPENDS |
| 78 | + "${CMAKE_CURRENT_SOURCE_DIR}/src/*.c" |
| 79 | + "${CMAKE_CURRENT_SOURCE_DIR}/dep_external/src/wav/*.c") |
92 | 80 |
|
93 | 81 | include_directories( |
94 | | - ${CODEC_INCLUDE_DIR} |
95 | | - ${EXTER_INCLUDE_DIR} |
96 | | - ${PROJECT_SOURCE_DIR}/src/common |
| 82 | + include |
| 83 | + ${DEP_CODECS_DIR}/include |
| 84 | + ${DEP_EXTERNAL_DIR}/include |
| 85 | + ${DEP_EXTERNAL_DIR}/src/oar-private/liboar/include |
| 86 | + ${DEP_EXTERNAL_DIR}/src/oar-private/liboar/src/common |
97 | 87 | ${PROJECT_SOURCE_DIR}/src/iamf_dec |
98 | | - ${PROJECT_SOURCE_DIR}/src/iamf_dec/arch |
99 | | - ${PROJECT_SOURCE_DIR}/src/iamf_dec/arch/arm |
100 | | - ${PROJECT_SOURCE_DIR}/src/iamf_dec/arch/x86 |
101 | | - ${PROJECT_SOURCE_DIR}/src/iamf_dec/opus |
102 | | - ${PROJECT_SOURCE_DIR}/src/iamf_dec/aac |
103 | | - ${PROJECT_SOURCE_DIR}/src/iamf_dec/flac |
| 88 | + ${PROJECT_SOURCE_DIR}/src/iamf_dec/codec |
| 89 | + ${PROJECT_SOURCE_DIR}/src/iamf_dec/codec/opus |
| 90 | + ${PROJECT_SOURCE_DIR}/src/iamf_dec/codec/aac |
| 91 | + ${PROJECT_SOURCE_DIR}/src/iamf_dec/codec/flac |
| 92 | + ${PROJECT_SOURCE_DIR}/src/iamf_dec/common |
| 93 | + ${PROJECT_SOURCE_DIR}/src/iamf_dec/obu |
104 | 94 | ) |
| 95 | + |
105 | 96 | link_directories ( |
106 | | - ${CODEC_LIB_DIR} |
| 97 | + ${DEP_CODECS_DIR}/lib |
107 | 98 | ) |
108 | 99 |
|
109 | | -if(MULTICHANNEL_BINAURALIZER OR HOA_BINAURALIZER) |
110 | | -link_directories( |
111 | | - ${EXTER_LIB_DIR}/binaural |
112 | | -) |
| 100 | +if(IAMF_BUILD_SHARED_LIB) |
| 101 | + add_library(${PROJECT_NAME} SHARED ${sources}) |
| 102 | +else() |
| 103 | + add_library(${PROJECT_NAME} STATIC ${sources}) |
113 | 104 | endif() |
114 | | - |
115 | | -if(BUILD_SHARED_LIBS) |
116 | | - add_library(${PROJECT_NAME} SHARED ${DIR_DEP_EXTERNAL_WAV} ${DIR_IAMF_COMMON} |
117 | | - ${DIR_IAMF_DEC_OPUS} ${DIR_IAMF_DEC_AAC} ${DIR_IAMF_DEC_FLAC} ${DIR_IAMF_DEC_PCM} ${DIR_IAMF_DEC} |
118 | | - ${DIR_IAMF_DEC_ARCH} ${DIR_IAMF_DEC_ARCH_ARM} ${DIR_IAMF_DEC_ARCH_X86}) |
119 | | - |
120 | | - if(NOT ${find_opus} STREQUAL "find_opus-NOTFOUND") |
121 | | - target_link_libraries (${PROJECT_NAME} opus) |
122 | | - endif() |
123 | | - |
124 | | - if(NOT ${find_aac} STREQUAL "find_aac-NOTFOUND") |
125 | | - target_link_libraries (${PROJECT_NAME} fdk-aac) |
126 | | - endif() |
127 | | - |
128 | | - if(NOT ${find_flac} STREQUAL "find_flac-NOTFOUND") |
129 | | - target_link_libraries (${PROJECT_NAME} FLAC) |
130 | | - endif() |
131 | | - |
132 | | - if(MULTICHANNEL_BINAURALIZER) |
133 | | - target_link_libraries (${PROJECT_NAME} iamf2bear) |
134 | | - endif() |
135 | | - if(HOA_BINAURALIZER) |
136 | | - target_link_libraries (${PROJECT_NAME} iamf2resonance) |
137 | | - endif() |
138 | | - target_link_libraries (${PROJECT_NAME} m) |
| 105 | +if (ENABLE_BUILD_CODECS) |
| 106 | + add_dependencies(${PROJECT_NAME} dep_opus dep_aac dep_flac) |
| 107 | + target_link_libraries (${PROJECT_NAME} opus fdk-aac FLAC) |
139 | 108 | else() |
140 | | - add_library(${PROJECT_NAME} STATIC ${DIR_DEP_EXTERNAL_WAV} ${DIR_IAMF_COMMON} |
141 | | - ${DIR_IAMF_DEC_OPUS} ${DIR_IAMF_DEC_AAC} ${DIR_IAMF_DEC_PCM} |
142 | | - ${DIR_IAMF_DEC_FLAC} ${DIR_IAMF_DEC} ${DIR_IAMF_DEC_ARCH} ${DIR_IAMF_DEC_ARCH_ARM} |
143 | | - ${DIR_IAMF_DEC_ARCH_X86}) |
| 109 | + if(NOT ${find_opus} STREQUAL "find_opus-NOTFOUND") |
| 110 | + target_link_libraries (${PROJECT_NAME} opus) |
| 111 | + endif() |
| 112 | + if(NOT ${find_aac} STREQUAL "find_aac-NOTFOUND") |
| 113 | + target_link_libraries (${PROJECT_NAME} fdk-aac) |
| 114 | + endif() |
| 115 | + if(NOT ${find_flac} STREQUAL "find_flac-NOTFOUND") |
| 116 | + target_link_libraries (${PROJECT_NAME} FLAC) |
| 117 | + endif() |
144 | 118 | endif() |
| 119 | +if(NOT MSVC) |
| 120 | + target_link_libraries (${PROJECT_NAME} m) |
| 121 | +endif() |
| 122 | +target_link_libraries (${PROJECT_NAME} oar) |
145 | 123 |
|
| 124 | +if(IAMF_TEST_TOOL) |
| 125 | + add_subdirectory(test/tools/iamfdec) |
| 126 | +endif() |
146 | 127 |
|
147 | | - |
148 | | -set(IAMF_PUBLIC_HEADER |
149 | | - ${CMAKE_CURRENT_SOURCE_DIR}/include/IAMF_decoder.h |
150 | | - ${CMAKE_CURRENT_SOURCE_DIR}/include/IAMF_defines.h |
151 | | - ${CMAKE_CURRENT_SOURCE_DIR}/include/vlogging_tool_sr.h |
152 | | - ) |
153 | | -set_target_properties(iamf PROPERTIES PUBLIC_HEADER "${IAMF_PUBLIC_HEADER}") |
154 | | - |
| 128 | +file(GLOB iamf_public_headers CONFIGURE_DEPENDS |
| 129 | + "${CMAKE_CURRENT_SOURCE_DIR}/include/*") |
| 130 | +set_target_properties(iamf PROPERTIES PUBLIC_HEADER "${iamf_public_headers}") |
155 | 131 |
|
156 | 132 | set(prefix ${CMAKE_INSTALL_PREFIX}) |
157 | 133 | set(exec_prefix ${CMAKE_INSTALL_PREFIX}) |
158 | 134 | set(libdir ${CMAKE_INSTALL_PREFIX}/lib) |
159 | 135 | set(includedir ${CMAKE_INSTALL_PREFIX}/include) |
160 | 136 | configure_file(iamf.pc.in iamf.pc) |
161 | 137 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/iamf.pc |
162 | | - DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig) |
| 138 | + DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig) |
163 | 139 |
|
164 | | -if(BUILD_SHARED_LIBS) |
165 | | - install(TARGETS ${PROJECT_NAME} |
| 140 | +if(IAMF_BUILD_SHARED_LIB) |
| 141 | + install(TARGETS ${PROJECT_NAME} |
166 | 142 | LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib |
167 | 143 | PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/iamf) |
168 | 144 | else() |
169 | | - install(TARGETS ${PROJECT_NAME} |
| 145 | + install(TARGETS ${PROJECT_NAME} |
170 | 146 | ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib |
171 | 147 | PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/iamf) |
172 | 148 | endif() |
173 | 149 |
|
174 | | -if(MULTICHANNEL_BINAURALIZER OR HOA_BINAURALIZER) |
175 | | - install(DIRECTORY ${EXTER_LIB_DIR}/binaural |
176 | | - DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) |
177 | | -endif() |
178 | | - |
0 commit comments