Sherpa-ONNX-KWS.AXERA / cpp /CMakeLists.txt
HY-2012's picture
First commit
dc79b9f verified
Raw
History Blame Contribute Delete
3.18 kB
cmake_minimum_required(VERSION 3.13)
project(sherpa_kws_axera_cpp LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release CACHE STRING "")
set(AXERA_TARGET "AX650" CACHE STRING "AXERA target: AX650 or AX630C")
set_property(CACHE AXERA_TARGET PROPERTY STRINGS AX650 AX630C)
string(TOUPPER "${AXERA_TARGET}" AXERA_TARGET)
if(AXERA_TARGET STREQUAL "AX650")
set(KWS_EXECUTABLE sherpa_kws_ax650)
set(DEFAULT_BSP_MSP_DIR
"${CMAKE_SOURCE_DIR}/toolchains/ax650n_bsp_sdk/msp/out")
elseif(AXERA_TARGET STREQUAL "AX630C")
set(KWS_EXECUTABLE sherpa_kws_ax630c)
set(DEFAULT_BSP_MSP_DIR
"${CMAKE_SOURCE_DIR}/toolchains/ax620e_bsp_sdk/msp/out/arm64_glibc")
else()
message(FATAL_ERROR "AXERA_TARGET must be AX650 or AX630C")
endif()
set(BSP_MSP_DIR "${DEFAULT_BSP_MSP_DIR}" CACHE PATH
"BSP directory containing include/ and lib/")
if(NOT EXISTS "${BSP_MSP_DIR}/include/ax_engine_api.h")
message(FATAL_ERROR
"${AXERA_TARGET} BSP not found: ${BSP_MSP_DIR}. "
"Set BSP_MSP_DIR to the directory containing include/ and lib/.")
endif()
set(KALDI_NATIVE_FBANK_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(KALDI_NATIVE_FBANK_BUILD_PYTHON OFF CACHE BOOL "" FORCE)
set(KALDI_NATIVE_FBANK_ENABLE_CHECK OFF CACHE BOOL "" FORCE)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(KALDI_NATIVE_FBANK_ARCHIVE
"${CMAKE_SOURCE_DIR}/third_party/kaldi-native-fbank-1.22.3.tar.gz")
set(KISSFFT_ARCHIVE
"${CMAKE_SOURCE_DIR}/third_party/kissfft-febd4caeed32e33ad8b2e0bb5ea77542c40f18ec.zip")
if(NOT EXISTS "${KALDI_NATIVE_FBANK_ARCHIVE}" OR
NOT EXISTS "${KISSFFT_ARCHIVE}")
message(FATAL_ERROR "Missing cpp/third_party fbank archives")
endif()
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/third_party")
execute_process(
COMMAND ${CMAKE_COMMAND} -E tar xzf "${KALDI_NATIVE_FBANK_ARCHIVE}"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/third_party"
RESULT_VARIABLE KNF_EXTRACT_RESULT
)
if(NOT KNF_EXTRACT_RESULT EQUAL 0)
message(FATAL_ERROR "Failed to extract kaldi-native-fbank archive")
endif()
set(KNF_SOURCE_DIR
"${CMAKE_BINARY_DIR}/third_party/kaldi-native-fbank-1.22.3")
file(COPY "${KISSFFT_ARCHIVE}" DESTINATION "${CMAKE_BINARY_DIR}")
add_subdirectory("${KNF_SOURCE_DIR}" "${CMAKE_BINARY_DIR}/knf"
EXCLUDE_FROM_ALL)
add_executable(${KWS_EXECUTABLE}
sherpa_kws_ax.cpp
src/engine_wrapper.cpp
)
target_include_directories(${KWS_EXECUTABLE} PRIVATE
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/src
${KNF_SOURCE_DIR}
${BSP_MSP_DIR}/include
)
target_link_directories(${KWS_EXECUTABLE} PRIVATE ${BSP_MSP_DIR}/lib)
target_compile_definitions(${KWS_EXECUTABLE} PRIVATE
AXERA_TARGET_NAME="${AXERA_TARGET}"
)
target_compile_options(${KWS_EXECUTABLE} PRIVATE
-O3 -Wall -Wextra -Wpedantic
-fvisibility=hidden -fdata-sections -ffunction-sections
)
target_link_libraries(${KWS_EXECUTABLE} PRIVATE
kaldi-native-fbank-core ax_sys ax_engine ax_interpreter pthread dl m
)
target_link_options(${KWS_EXECUTABLE} PRIVATE
-Wl,--enable-new-dtags -Wl,--allow-shlib-undefined
)
set_target_properties(${KWS_EXECUTABLE} PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH "$ORIGIN"
)