File size: 2,988 Bytes
b9c240c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# third party
set(THIRDPARTY_DIR ${CMAKE_SOURCE_DIR}/third_party)

# Distinguish arm-uclibc vs arm-gnueabihf by compiler target.
set(AX_TTS_COMPILER_TARGET "")
if(CMAKE_C_COMPILER)
    execute_process(
        COMMAND ${CMAKE_C_COMPILER} -dumpmachine
        OUTPUT_VARIABLE AX_TTS_COMPILER_TARGET
        OUTPUT_STRIP_TRAILING_WHITESPACE
        ERROR_QUIET
    )
endif()
if(NOT AX_TTS_COMPILER_TARGET)
    set(AX_TTS_COMPILER_TARGET "${CMAKE_C_COMPILER}")
endif()

set(AX_TTS_THIRDPARTY_FLAVOR "")
if(AX_TTS_COMPILER_TARGET MATCHES "aarch64")
    set(AX_TTS_THIRDPARTY_FLAVOR "aarch64")
elseif(AX_TTS_COMPILER_TARGET MATCHES "uclibc")
    set(AX_TTS_THIRDPARTY_FLAVOR "arm_uclibc")
elseif(AX_TTS_COMPILER_TARGET MATCHES "gnueabihf")
    set(AX_TTS_THIRDPARTY_FLAVOR "arm_gnueabihf")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
    set(AX_TTS_THIRDPARTY_FLAVOR "aarch64")
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm")
    # Keep old behavior for unknown ARM toolchains.
    set(AX_TTS_THIRDPARTY_FLAVOR "arm_uclibc")
else()
    message(FATAL_ERROR "Unsupported processor/toolchain: ${CMAKE_SYSTEM_PROCESSOR}, target=${AX_TTS_COMPILER_TARGET}")
endif()

message(STATUS "AX_TTS third-party flavor: ${AX_TTS_THIRDPARTY_FLAVOR} (target=${AX_TTS_COMPILER_TARGET})")

# espeak-ng
set(ESPEAK_INC_DIR ${THIRDPARTY_DIR}/espeak-ng/include)
if(AX_TTS_THIRDPARTY_FLAVOR STREQUAL "aarch64")
    set(ESPEAK_LIB_DIR ${THIRDPARTY_DIR}/espeak-ng/lib/aarch64)
elseif(AX_TTS_THIRDPARTY_FLAVOR STREQUAL "arm_uclibc")
    set(ESPEAK_LIB_DIR ${THIRDPARTY_DIR}/espeak-ng/lib/uclibc)
elseif(AX_TTS_THIRDPARTY_FLAVOR STREQUAL "arm_gnueabihf")
    set(ESPEAK_LIB_DIR ${THIRDPARTY_DIR}/espeak-ng/lib/gnueabihf)
endif()
if(NOT EXISTS ${ESPEAK_LIB_DIR})
    message(FATAL_ERROR "espeak lib dir not found: ${ESPEAK_LIB_DIR}")
endif()
list(APPEND ESPEAK_LIBS espeak-ng ucd speechPlayer pthread)

include_directories(${ESPEAK_INC_DIR})
link_directories(${ESPEAK_LIB_DIR})

# onnxruntime
set(ORT_INC_DIR ${THIRDPARTY_DIR}/onnxruntime-linux-aarch64-static_lib-1.16.0/include)
if(AX_TTS_THIRDPARTY_FLAVOR STREQUAL "aarch64")
    set(ORT_LIB_DIR ${THIRDPARTY_DIR}/onnxruntime-linux-aarch64-static_lib-1.16.0/lib/aarch64)
elseif(AX_TTS_THIRDPARTY_FLAVOR STREQUAL "arm_uclibc")
    if(EXISTS ${THIRDPARTY_DIR}/onnxruntime-linux-aarch64-static_lib-1.16.0/lib/arm_uclibc)
        set(ORT_LIB_DIR ${THIRDPARTY_DIR}/onnxruntime-linux-aarch64-static_lib-1.16.0/lib/arm_uclibc)
    else()
        # Compatible with existing layout
        set(ORT_LIB_DIR ${THIRDPARTY_DIR}/onnxruntime-linux-aarch64-static_lib-1.16.0/lib/arm)
    endif()
elseif(AX_TTS_THIRDPARTY_FLAVOR STREQUAL "arm_gnueabihf")
    set(ORT_LIB_DIR ${THIRDPARTY_DIR}/onnxruntime-linux-aarch64-static_lib-1.16.0/lib/arm_gnueabihf)
endif()
if(NOT EXISTS ${ORT_LIB_DIR})
    message(FATAL_ERROR "onnxruntime lib dir not found: ${ORT_LIB_DIR}")
endif()
list(APPEND ORT_LIBS onnxruntime)

include_directories(${ORT_INC_DIR})
link_directories(${ORT_LIB_DIR})