Files
BPI-CM9-Linux/aml-comp/multimedia/libiamf/code/CMakeLists.txt
T
2026-08-24 10:03:24 +08:00

188 lines
5.9 KiB
CMake

cmake_minimum_required(VERSION 3.6)
project (iamf-ahal)
message(STATUS "start build iamf")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -Werror=unused-variable")
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
option(BUILD_SHARED_LIBS "Build shared library" ON)
if (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)")
set(CODEC_LIB_DIR "${PROJECT_SOURCE_DIR}/dep_codecs/lib")
message(WARNING "linux 32 bit!!!")
else ()
set(CODEC_LIB_DIR "${PROJECT_SOURCE_DIR}/dep_codecs/lib64")
message(WARNING "linux 64 bit!!!")
endif ()
set(CODEC_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/dep_codecs/include")
set(EXTER_LIB_DIR "${PROJECT_SOURCE_DIR}/dep_external/lib")
set(EXTER_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/dep_external/include")
option(SUPPORT_VERIFIER "Output vlogging file" OFF)
if (SUPPORT_VERIFIER)
message(STATUS "Output vlogging file")
add_definitions(-DSUPPORT_VERIFIER=1)
endif()
option(CODEC_CAP "Codec capability check" ON)
option(MULTICHANNEL_BINAURALIZER "Enable multichannel binaural rendering" OFF)
option(HOA_BINAURALIZER "Enable HOA binaural rendering" OFF)
if (CMAKE_BUILD_TYPE)
string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
if ("${BUILD_TYPE}" STREQUAL "debug")
add_definitions(-DIA_DBG)
message(STATUS "Debug mode.")
endif()
endif()
if(MULTICHANNEL_BINAURALIZER)
message(STATUS "Enable multichannel binaural rendering")
add_definitions(-DENABLE_MULTICHANNEL_TO_BINAURAL=1)
endif()
if(HOA_BINAURALIZER)
message(STATUS "Enable HOA binaural rendering")
add_definitions(-DENABLE_HOA_TO_BINAURAL=1)
endif()
message(STATUS "CODEC_LIB_DIR: ${CODEC_LIB_DIR}")
if(CODEC_CAP)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
unset(find_opus CACHE)
find_library(find_opus NAMES opus PATHS ${CODEC_LIB_DIR} NO_DEFAULT_PATH)
if(${find_opus} STREQUAL "find_opus-NOTFOUND")
message(WARNING "the opus library was not found")
else()
add_definitions(-DCONFIG_OPUS_CODEC)
endif()
unset(find_aac CACHE)
find_library(find_aac NAMES fdk-aac PATHS ${CODEC_LIB_DIR} NO_DEFAULT_PATH)
if(${find_aac} STREQUAL "find_aac-NOTFOUND")
message(WARNING "the fdk-aac library was not found")
else()
add_definitions(-DCONFIG_AAC_CODEC)
endif()
unset(find_flac CACHE)
find_library(find_flac NAMES FLAC PATHS ${CODEC_LIB_DIR} NO_DEFAULT_PATH)
if(${find_flac} STREQUAL "find_flac-NOTFOUND")
message(WARNING "the FLAC library was not found")
else()
add_definitions(-DCONFIG_FLAC_CODEC)
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
add_definitions(-DFLAC__NO_DLL)
endif()
endif()
endif()
include_directories (include)
aux_source_directory (dep_external/src/wav DIR_DEP_EXTERNAL_WAV)
aux_source_directory (src/common DIR_IAMF_COMMON)
aux_source_directory (src/iamf_dec DIR_IAMF_DEC)
aux_source_directory (src/iamf_dec/arch DIR_IAMF_DEC_ARCH)
aux_source_directory (src/iamf_dec/arch/arm DIR_IAMF_DEC_ARCH_ARM)
aux_source_directory (src/iamf_dec/arch/x86 DIR_IAMF_DEC_ARCH_X86)
if(NOT ${find_opus} STREQUAL "find_opus-NOTFOUND")
aux_source_directory (src/iamf_dec/opus DIR_IAMF_DEC_OPUS)
endif()
if(NOT ${find_aac} STREQUAL "find_aac-NOTFOUND")
aux_source_directory (src/iamf_dec/aac DIR_IAMF_DEC_AAC)
endif()
if(NOT ${find_flac} STREQUAL "find_flac-NOTFOUND")
aux_source_directory (src/iamf_dec/flac DIR_IAMF_DEC_FLAC)
endif()
aux_source_directory (src/iamf_dec/pcm DIR_IAMF_DEC_PCM)
include_directories(
${CODEC_INCLUDE_DIR}
${EXTER_INCLUDE_DIR}
${PROJECT_SOURCE_DIR}/src/common
${PROJECT_SOURCE_DIR}/src/iamf_dec
${PROJECT_SOURCE_DIR}/src/iamf_dec/arch
${PROJECT_SOURCE_DIR}/src/iamf_dec/arch/arm
${PROJECT_SOURCE_DIR}/src/iamf_dec/arch/x86
${PROJECT_SOURCE_DIR}/src/iamf_dec/opus
${PROJECT_SOURCE_DIR}/src/iamf_dec/aac
${PROJECT_SOURCE_DIR}/src/iamf_dec/flac
)
link_directories (
${CODEC_LIB_DIR}
)
if(MULTICHANNEL_BINAURALIZER OR HOA_BINAURALIZER)
link_directories(
${EXTER_LIB_DIR}/binaural
)
endif()
if(BUILD_SHARED_LIBS)
add_library(${PROJECT_NAME} SHARED ${DIR_DEP_EXTERNAL_WAV} ${DIR_IAMF_COMMON}
${DIR_IAMF_DEC_OPUS} ${DIR_IAMF_DEC_AAC} ${DIR_IAMF_DEC_FLAC} ${DIR_IAMF_DEC_PCM} ${DIR_IAMF_DEC}
${DIR_IAMF_DEC_ARCH} ${DIR_IAMF_DEC_ARCH_ARM} ${DIR_IAMF_DEC_ARCH_X86}
src/aml_decoder.c)
if(NOT ${find_opus} STREQUAL "find_opus-NOTFOUND")
target_link_libraries (${PROJECT_NAME} opus)
endif()
if(NOT ${find_aac} STREQUAL "find_aac-NOTFOUND")
target_link_libraries (${PROJECT_NAME} fdk-aac)
endif()
if(NOT ${find_flac} STREQUAL "find_flac-NOTFOUND")
target_link_libraries (${PROJECT_NAME} FLAC)
endif()
if(MULTICHANNEL_BINAURALIZER)
target_link_libraries (${PROJECT_NAME} iamf2bear)
endif()
if(HOA_BINAURALIZER)
target_link_libraries (${PROJECT_NAME} iamf2resonance)
endif()
target_link_libraries (${PROJECT_NAME} m)
else()
add_library(${PROJECT_NAME} STATIC ${DIR_DEP_EXTERNAL_WAV} ${DIR_IAMF_COMMON}
${DIR_IAMF_DEC_OPUS} ${DIR_IAMF_DEC_AAC} ${DIR_IAMF_DEC_PCM}
${DIR_IAMF_DEC_FLAC} ${DIR_IAMF_DEC} ${DIR_IAMF_DEC_ARCH} ${DIR_IAMF_DEC_ARCH_ARM}
${DIR_IAMF_DEC_ARCH_X86})
endif()
set(IAMF_PUBLIC_HEADER
${CMAKE_CURRENT_SOURCE_DIR}/include/IAMF_decoder.h
${CMAKE_CURRENT_SOURCE_DIR}/include/IAMF_defines.h
${CMAKE_CURRENT_SOURCE_DIR}/include/vlogging_tool_sr.h
)
set_target_properties(iamf-ahal PROPERTIES PUBLIC_HEADER "${IAMF_PUBLIC_HEADER}")
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
set(includedir ${CMAKE_INSTALL_PREFIX}/include)
configure_file(iamf.pc.in iamf.pc)
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/iamf.pc
# DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
if(BUILD_SHARED_LIBS)
install(TARGETS ${PROJECT_NAME}
LIBRARY DESTINATION lib)
else()
install(TARGETS ${PROJECT_NAME}
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/iamf)
endif()
if(MULTICHANNEL_BINAURALIZER OR HOA_BINAURALIZER)
install(DIRECTORY ${EXTER_LIB_DIR}/binaural
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
endif()