-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
142 lines (108 loc) · 4.4 KB
/
CMakeLists.txt
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
cmake_minimum_required(VERSION 3.14)
project("tts.cpp" C CXX)
include(CheckIncludeFileCXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_WARN_UNUSED_CLI YES)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(ESPEAK_INSTALL_DIR "$ENV{ESPEAK_INSTALL_DIR}")
if (ESPEAK_INSTALL_DIR)
set(ESPEAK_LIB_DIR ${ESPEAK_INSTALL_DIR}/lib)
set(ESPEAK_INCLUDE_DIR ${ESPEAK_INSTALL_DIR}/include/espeak-ng)
add_definitions(-DESPEAK_INSTALL=1)
endif()
if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
# Add path to modules
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(TTS_STANDALONE ON)
include(git-vars)
else()
set(TTS_STANDALONE OFF)
endif()
option(BUILD_SHARED_LIBS "build shared libraries" ${BUILD_SHARED_LIBS_DEFAULT})
if (WIN32)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
add_compile_options("$<$<COMPILE_LANGUAGE:C>:/source-charset:utf-8>")
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:/source-charset:utf-8>")
add_compile_options("$<$<COMPILE_LANGUAGE:C>:/execution-charset:utf-8>")
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:/execution-charset:utf-8>")
endif()
# debug
option(TTS_ALL_WARNINGS "TTS.cpp: enable all compiler warnings" ON)
option(TTS_ALL_WARNINGS_3RD_PARTY "TTS.cpp: enable all compiler warnings in 3rd party libs" OFF)
# build
option(TTS_FATAL_WARNINGS "TTS.cpp: enable -Werror flag" OFF)
# extra artifacts
option(TTS_BUILD_EXAMPLES "TTS.cpp: build examples" ON)
# Required for relocatable CMake package
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/build-info.cmake)
# override ggml options
set(GGML_ALL_WARNINGS ${TTS_ALL_WARNINGS})
set(GGML_FATAL_WARNINGS ${TTS_FATAL_WARNINGS})
# build lib
if (NOT TARGET ggml)
add_subdirectory(ggml)
# ... otherwise assume ggml is added by a parent CMakeLists.txt
endif()
add_subdirectory(src)
# install tts
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
set(TTS_BUILD_NUMBER ${BUILD_NUMBER})
set(TTS_BUILD_COMMIT ${BUILD_COMMIT})
set(TTS_INSTALL_VERSION 0.0.${BUILD_NUMBER})
set(TTS_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files")
set(TTS_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files")
set(TTS_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of binary files")
# form copied from llama.cpp see explanation there.
set(GGML_TRANSIENT_DEFINES)
get_target_property(GGML_DIRECTORY ggml SOURCE_DIR)
get_directory_property(GGML_DIR_DEFINES DIRECTORY ${GGML_DIRECTORY} COMPILE_DEFINITIONS)
if (GGML_DIR_DEFINES)
list(APPEND GGML_TRANSIENT_DEFINES ${GGML_DIR_DEFINES})
endif()
get_target_property(GGML_TARGET_DEFINES ggml COMPILE_DEFINITIONS)
if (GGML_TARGET_DEFINES)
list(APPEND GGML_TRANSIENT_DEFINES ${GGML_TARGET_DEFINES})
endif()
get_target_property(GGML_LINK_LIBRARIES ggml LINK_LIBRARIES)
# all public headers
set(TTS_PUBLIC_HEADERS
include/common.h
include/tts.h
include/audio_file.h
include/args.h
include/phonemizer.h)
set_target_properties(tts PROPERTIES PUBLIC_HEADER "${TTS_PUBLIC_HEADERS}")
install(TARGETS tts LIBRARY PUBLIC_HEADER)
configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/tts-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/tts-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tts
PATH_VARS TTS_INCLUDE_INSTALL_DIR
TTS_LIB_INSTALL_DIR
TTS_BIN_INSTALL_DIR )
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/tts-version.cmake
VERSION ${TTS_INSTALL_VERSION}
COMPATIBILITY SameMajorVersion)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tts-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/parer-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tts)
configure_file(cmake/tts.pc.in
"${CMAKE_CURRENT_BINARY_DIR}/tts.pc"
@ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tts.pc"
DESTINATION lib/pkgconfig)
# examples
if (TTS_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()