cmake_minimum_required(VERSION 3.13) project(openwakeword_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 openwakeword_ax650) set(DEFAULT_BSP_MSP_DIR "${CMAKE_SOURCE_DIR}/toolchains/ax650n_bsp_sdk/msp/out") elseif(AXERA_TARGET STREQUAL "AX630C") set(KWS_EXECUTABLE openwakeword_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() add_executable(${KWS_EXECUTABLE} openwakeword_ax.cpp src/engine_wrapper.cpp ) target_include_directories(${KWS_EXECUTABLE} PRIVATE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src ${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 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" )