From 6595b2e5b1a29837302eb22a220ebc7be371b35f Mon Sep 17 00:00:00 2001 From: Fangjun Kuang Date: Sun, 26 Nov 2023 23:44:13 +0800 Subject: [PATCH 1/6] support building static libraries --- CMakeLists.txt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b3a144d..624ed22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,8 +21,10 @@ elseif(NOT APPLE) string(APPEND CMAKE_C_FLAGS " -Wall -Wextra") endif() +option(BUILD_SHARED_LIBS "Whether to build shared libraries" ON) + add_library( - piper_phonemize SHARED + piper_phonemize src/phonemize.cpp src/phoneme_ids.cpp src/tashkeel.cpp @@ -107,7 +109,7 @@ if(NOT DEFINED ESPEAK_NG_DIR) URL "https://github.com/rhasspy/espeak-ng/archive/refs/heads/master.zip" CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${ESPEAK_NG_DIR} CMAKE_ARGS -DUSE_ASYNC:BOOL=OFF - CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=ON + CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} CMAKE_ARGS -DUSE_MBROLA:BOOL=OFF CMAKE_ARGS -DUSE_LIBSONIC:BOOL=OFF CMAKE_ARGS -DUSE_LIBPCAUDIO:BOOL=OFF @@ -142,6 +144,10 @@ target_link_libraries( onnxruntime ) +if(NOT BUILD_SHARED_LIBS) + target_link_libraries(piper_phonemize ucd) +endif() + target_compile_features(piper_phonemize PUBLIC cxx_std_17) # ---- Declare executable ---- From f685d6b9c81ff37afd003750aaa2799f4b8599f9 Mon Sep 17 00:00:00 2001 From: Fangjun Kuang Date: Mon, 27 Nov 2023 20:37:01 +0800 Subject: [PATCH 2/6] Remove soversion --- CMakeLists.txt | 5 ----- 1 file changed, 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 624ed22..a0ec704 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,11 +31,6 @@ add_library( src/shared.cpp ) -set_target_properties(piper_phonemize PROPERTIES - VERSION ${PROJECT_VERSION} - SOVERSION ${PROJECT_VERSION_MAJOR} -) - # ---- onnxruntime --- # Look for onnxruntime files in /lib From 290533ed3ef3637401aa7eb49aa8b713449da39d Mon Sep 17 00:00:00 2001 From: Fangjun Kuang Date: Mon, 27 Nov 2023 21:44:28 +0800 Subject: [PATCH 3/6] Fix for iOS --- CMakeLists.txt | 136 +++++++++++++++++++++++++++++-------------------- 1 file changed, 81 insertions(+), 55 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0ec704..b6ed216 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,8 @@ elseif(NOT APPLE) endif() option(BUILD_SHARED_LIBS "Whether to build shared libraries" ON) +option(BUILD_PIPER_PHONMIZE_EXE "Whether to build piper_phonemize_exe" ON) +option(BUILD_PIPER_PHONMIZE_TESTS "Whether to build tests" ON) add_library( piper_phonemize @@ -127,12 +129,26 @@ target_include_directories( ${ONNXRUNTIME_DIR}/include ) +if(DEFINED ENV{SHERPA_ONNXRUNTIME_INCLUDE_DIR}) + target_include_directories( + piper_phonemize PUBLIC + $ENV{SHERPA_ONNXRUNTIME_INCLUDE_DIR} + ) +endif() + target_link_directories( piper_phonemize PUBLIC ${ESPEAK_NG_DIR}/lib ${ONNXRUNTIME_DIR}/lib ) +if(DEFINED ENV{SHERPA_ONNXRUNTIME_LIB_DIR}) + target_link_directories( + piper_phonemize PUBLIC + $ENV{SHERPA_ONNXRUNTIME_LIB_DIR} + ) +endif() + target_link_libraries( piper_phonemize espeak-ng @@ -145,59 +161,63 @@ endif() target_compile_features(piper_phonemize PUBLIC cxx_std_17) -# ---- Declare executable ---- - -add_executable(piper_phonemize_exe src/main.cpp src/phoneme_ids.cpp) - -if(NOT WIN32) - set_property(TARGET piper_phonemize_exe PROPERTY OUTPUT_NAME piper_phonemize) -endif() - -target_compile_features(piper_phonemize_exe PUBLIC cxx_std_17) - -target_include_directories( - piper_phonemize_exe PUBLIC - "$" - ${ESPEAK_NG_DIR}/include -) +if(BUILD_PIPER_PHONMIZE_EXE) + # ---- Declare executable ---- -target_link_directories( - piper_phonemize_exe PUBLIC - ${ESPEAK_NG_DIR}/lib -) + add_executable(piper_phonemize_exe src/main.cpp src/phoneme_ids.cpp) -target_link_libraries(piper_phonemize_exe PUBLIC - piper_phonemize - espeak-ng -) + if(NOT WIN32) + set_property(TARGET piper_phonemize_exe PROPERTY OUTPUT_NAME piper_phonemize) + endif() -# ---- Declare test ---- + target_compile_features(piper_phonemize_exe PUBLIC cxx_std_17) -include(CTest) -enable_testing() -add_executable(test_piper_phonemize src/test.cpp src/phoneme_ids.cpp) -add_test( - NAME test_piper_phonemize - COMMAND test_piper_phonemize "${ESPEAK_NG_DIR}/share/espeak-ng-data" "${CMAKE_SOURCE_DIR}/etc/libtashkeel_model.ort" -) + target_include_directories( + piper_phonemize_exe PUBLIC + "$" + ${ESPEAK_NG_DIR}/include + ) -target_compile_features(test_piper_phonemize PUBLIC cxx_std_17) + target_link_directories( + piper_phonemize_exe PUBLIC + ${ESPEAK_NG_DIR}/lib + ) -target_include_directories( - test_piper_phonemize PUBLIC - "$" - ${ESPEAK_NG_DIR}/include -) - -target_link_directories( - test_piper_phonemize PUBLIC - ${ESPEAK_NG_DIR}/lib -) + target_link_libraries(piper_phonemize_exe PUBLIC + piper_phonemize + espeak-ng + ) +endif() -target_link_libraries(test_piper_phonemize PUBLIC - piper_phonemize - espeak-ng -) +if(BUILD_PIPER_PHONMIZE_TESTS) + # ---- Declare test ---- + + include(CTest) + enable_testing() + add_executable(test_piper_phonemize src/test.cpp src/phoneme_ids.cpp) + add_test( + NAME test_piper_phonemize + COMMAND test_piper_phonemize "${ESPEAK_NG_DIR}/share/espeak-ng-data" "${CMAKE_SOURCE_DIR}/etc/libtashkeel_model.ort" + ) + + target_compile_features(test_piper_phonemize PUBLIC cxx_std_17) + + target_include_directories( + test_piper_phonemize PUBLIC + "$" + ${ESPEAK_NG_DIR}/include + ) + + target_link_directories( + test_piper_phonemize PUBLIC + ${ESPEAK_NG_DIR}/lib + ) + + target_link_libraries(test_piper_phonemize PUBLIC + piper_phonemize + espeak-ng + ) +endif() # ---- Declare install targets ---- @@ -214,9 +234,11 @@ install( PATTERN "*.h" PATTERN "*.hpp") -install( - TARGETS piper_phonemize_exe - ARCHIVE DESTINATION ${CMAKE_INSTALL_BINDIR}) +if(BUILD_PIPER_PHONMIZE_EXE) + install( + TARGETS piper_phonemize_exe + ARCHIVE DESTINATION ${CMAKE_INSTALL_BINDIR}) +endif() install( FILES ${CMAKE_SOURCE_DIR}/etc/libtashkeel_model.ort @@ -227,10 +249,14 @@ install( DIRECTORY ${ESPEAK_NG_DIR}/ DESTINATION ${CMAKE_INSTALL_PREFIX}) -install( - DIRECTORY ${ONNXRUNTIME_DIR}/include/ - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +if(EXISTS ${ONNXRUNTIME_DIR}/include) + install( + DIRECTORY ${ONNXRUNTIME_DIR}/include/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +endif() -install( - DIRECTORY ${ONNXRUNTIME_DIR}/lib/ - DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(EXISTS ${ONNXRUNTIME_DIR}/lib) + install( + DIRECTORY ${ONNXRUNTIME_DIR}/lib/ + DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() From 23dcd9e4b4f7f03f60726662bd6112bbc84836f0 Mon Sep 17 00:00:00 2001 From: Fangjun Kuang Date: Mon, 27 Nov 2023 22:14:05 +0800 Subject: [PATCH 4/6] Fix linker warnings --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6ed216..6306ac5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ if(MSVC) elseif(NOT APPLE) # Linux flags - string(APPEND CMAKE_CXX_FLAGS " -Wall -Wextra -Wl,-rpath,'$ORIGIN'") + string(APPEND CMAKE_CXX_FLAGS " -Wall -Wextra ") string(APPEND CMAKE_C_FLAGS " -Wall -Wextra") endif() From 42253ddc6e43d9e62067711c4b837ace80edfc49 Mon Sep 17 00:00:00 2001 From: Fangjun Kuang Date: Tue, 28 Nov 2023 11:16:22 +0800 Subject: [PATCH 5/6] Enable soname optionally --- CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6306ac5..428a0ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,7 @@ endif() option(BUILD_SHARED_LIBS "Whether to build shared libraries" ON) option(BUILD_PIPER_PHONMIZE_EXE "Whether to build piper_phonemize_exe" ON) option(BUILD_PIPER_PHONMIZE_TESTS "Whether to build tests" ON) +option(ENABLE_PIPER_PHONMIZE_SONAME "Whether to enable soname" ON) add_library( piper_phonemize @@ -33,10 +34,17 @@ add_library( src/shared.cpp ) +if(ENABLE_PIPER_PHONMIZE_SONAME) + set_target_properties(piper_phonemize PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + ) +endif() + # ---- onnxruntime --- # Look for onnxruntime files in /lib -if(NOT DEFINED ONNXRUNTIME_DIR) +if(NOT DEFINED ONNXRUNTIME_DIR AND NOT DEFINED ENV{SHERPA_ONNXRUNTIME_LIB_DIR}) if(NOT DEFINED ONNXRUNTIME_VERSION) set(ONNXRUNTIME_VERSION "1.14.1") endif() From 6383e46b62e94c5cafc0c6a6212249ed8b9ed8d0 Mon Sep 17 00:00:00 2001 From: Fangjun Kuang Date: Tue, 28 Nov 2023 13:53:04 +0800 Subject: [PATCH 6/6] Fix cmake warnings --- CMakeLists.txt | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 428a0ab..b7d7d90 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -144,11 +144,19 @@ if(DEFINED ENV{SHERPA_ONNXRUNTIME_INCLUDE_DIR}) ) endif() -target_link_directories( - piper_phonemize PUBLIC - ${ESPEAK_NG_DIR}/lib - ${ONNXRUNTIME_DIR}/lib -) +if(EXISTS ${ESPEAK_NG_DIR}/lib) + target_link_directories( + piper_phonemize PUBLIC + ${ESPEAK_NG_DIR}/lib + ) +endif() + +if(EXISTS ${ONNXRUNTIME_DIR}/lib) + target_link_directories( + piper_phonemize PUBLIC + ${ONNXRUNTIME_DIR}/lib + ) +endif() if(DEFINED ENV{SHERPA_ONNXRUNTIME_LIB_DIR}) target_link_directories( @@ -186,10 +194,12 @@ if(BUILD_PIPER_PHONMIZE_EXE) ${ESPEAK_NG_DIR}/include ) - target_link_directories( - piper_phonemize_exe PUBLIC - ${ESPEAK_NG_DIR}/lib - ) + if(EXISTS ${ESPEAK_NG_DIR}/lib) + target_link_directories( + piper_phonemize_exe PUBLIC + ${ESPEAK_NG_DIR}/lib + ) + endif() target_link_libraries(piper_phonemize_exe PUBLIC piper_phonemize @@ -216,10 +226,12 @@ if(BUILD_PIPER_PHONMIZE_TESTS) ${ESPEAK_NG_DIR}/include ) - target_link_directories( - test_piper_phonemize PUBLIC - ${ESPEAK_NG_DIR}/lib - ) + if(EXISTS ${ESPEAK_NG_DIR}/lib) + target_link_directories( + test_piper_phonemize PUBLIC + ${ESPEAK_NG_DIR}/lib + ) + endif() target_link_libraries(test_piper_phonemize PUBLIC piper_phonemize