forked from OHF-Voice/piper1-gpl
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
97 lines (84 loc) · 3.05 KB
/
CMakeLists.txt
File metadata and controls
97 lines (84 loc) · 3.05 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Builds Python module for Piper using espeak-ng and cmake.
#
# This is called automatically by scikit-build from setup.py.
cmake_minimum_required(VERSION 3.26)
project(piper LANGUAGES C CXX)
include(ExternalProject)
# scikit-build-core will forward Python_* variables
find_package(Python COMPONENTS Development.Module Development.SABIModule REQUIRED)
# Install location for espeak-ng
set(ESPEAKNG_BUILD_DIR ${CMAKE_BINARY_DIR}/espeak_ng)
set(ESPEAKNG_INSTALL_DIR ${CMAKE_BINARY_DIR}/espeak_ng-install)
if(WIN32)
# Special handling for Windows
set(ESPEAKNG_STATIC_LIB ${ESPEAKNG_INSTALL_DIR}/lib/espeak-ng.lib)
set(UCD_STATIC_LIB ${ESPEAKNG_BUILD_DIR}/src/espeak_ng_external-build/src/ucd-tools/ucd.lib)
else()
set(ESPEAKNG_STATIC_LIB ${ESPEAKNG_INSTALL_DIR}/lib/libespeak-ng.a)
set(UCD_STATIC_LIB ${ESPEAKNG_BUILD_DIR}/src/espeak_ng_external-build/src/ucd-tools/libucd.a)
endif()
ExternalProject_Add(espeak_ng_external
GIT_REPOSITORY https://github.com/espeak-ng/espeak-ng.git
GIT_TAG 212928b394a96e8fd2096616bfd54e17845c48f6 # 2025-Mar-22
PREFIX ${ESPEAKNG_BUILD_DIR}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${ESPEAKNG_INSTALL_DIR}
-DBUILD_SHARED_LIBS:BOOL=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
-DUSE_ASYNC:BOOL=OFF
-DUSE_MBROLA:BOOL=OFF
-DUSE_LIBSONIC:BOOL=OFF
-DUSE_LIBPCAUDIO:BOOL=OFF
-DUSE_KLATT:BOOL=OFF
-DUSE_SPEECHPLAYER:BOOL=OFF
-DEXTRA_cmn:BOOL=ON
-DEXTRA_ru:BOOL=ON
# Need to explicitly add ucd include directory for CI
"-DCMAKE_C_FLAGS=-D_FILE_OFFSET_BITS=64 -I${ESPEAKNG_BUILD_DIR}/src/espeak_ng_external/src/ucd-tools/src/include"
"-DCMAKE_CXX_FLAGS=-D_FILE_OFFSET_BITS=64 -I${ESPEAKNG_BUILD_DIR}/src/espeak_ng_external/src/ucd-tools/src/include"
BUILD_BYPRODUCTS
${ESPEAKNG_STATIC_LIB}
${UCD_STATIC_LIB}
UPDATE_DISCONNECTED TRUE
)
include_directories(
${ESPEAKNG_INSTALL_DIR}/include
)
# espeak bridge
add_library(espeakbridge MODULE
src/piper/espeakbridge.c
)
add_dependencies(espeakbridge espeak_ng_external)
target_link_libraries(espeakbridge
${ESPEAKNG_STATIC_LIB}
${UCD_STATIC_LIB}
Python::SABIModule
)
target_include_directories(espeakbridge PRIVATE
${ESPEAKNG_INSTALL_DIR}/include
)
if(WIN32)
# Fix dll thunk issue (__imp_SYMBOL not found)
target_compile_definitions(espeakbridge PRIVATE LIBESPEAK_NG_EXPORT)
# Fix .dll suffix
set_target_properties(espeakbridge PROPERTIES
PREFIX ""
SUFFIX ".pyd"
)
else()
set_target_properties(espeakbridge PROPERTIES
PREFIX ""
)
endif()
install(TARGETS espeakbridge
LIBRARY DESTINATION .
RUNTIME DESTINATION .
)
# Copy espeak-ng-data
set(DATA_SRC ${CMAKE_BINARY_DIR}/espeak_ng-install/share/espeak-ng-data)
set(DATA_DST ${CMAKE_CURRENT_SOURCE_DIR}/src/piper/espeak-ng-data)
add_custom_target(copy_espeak_ng_data ALL
COMMAND ${CMAKE_COMMAND} -E copy_directory ${DATA_SRC} ${DATA_DST}
DEPENDS espeak_ng_external
COMMENT "Copying espeak-ng-data after espeak-ng external project builds"
)