File piper-cmake.patch of Package piper-tts

Index: piper-2023.11.14-2/CMakeLists.txt
===================================================================
--- piper-2023.11.14-2.orig/CMakeLists.txt	2023-11-14 18:55:22.000000000 +0100
+++ piper-2023.11.14-2/CMakeLists.txt	2024-03-11 13:45:57.675350908 +0100
@@ -7,17 +7,21 @@ file(READ "${CMAKE_CURRENT_LIST_DIR}/VER
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
+option(BUILD_EXTERNAL "Build external dependencies" OFF)
+
 if(MSVC)
   # Force compiler to use UTF-8 for IPA constants
   add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
   add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
 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()
 
 add_executable(piper src/cpp/main.cpp src/cpp/piper.cpp)
+set_property(TARGET piper PROPERTY OUTPUT_NAME piper-tts)
+
 add_executable(test_piper src/cpp/test.cpp src/cpp/piper.cpp)
 
 # NOTE: external project prefix are shortened because of path length restrictions on Windows
@@ -25,82 +29,110 @@ add_executable(test_piper src/cpp/test.c
 
 # ---- fmt ---
 
-if(NOT DEFINED FMT_DIR)
-  set(FMT_VERSION "10.0.0")
-  set(FMT_DIR "${CMAKE_CURRENT_BINARY_DIR}/fi")
-
-  include(ExternalProject)
-  ExternalProject_Add(
-    fmt_external
-    PREFIX "${CMAKE_CURRENT_BINARY_DIR}/f"
-    URL "https://github.com/fmtlib/fmt/archive/refs/tags/${FMT_VERSION}.zip"
-    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${FMT_DIR}
-    CMAKE_ARGS -DFMT_TEST:BOOL=OFF  # Don't build all the tests
-  )
-  add_dependencies(piper fmt_external)
-  add_dependencies(test_piper fmt_external)
+if (BUILD_EXTERNAL)
+    if(NOT DEFINED FMT_DIR)
+    set(FMT_VERSION "10.0.0")
+    set(FMT_DIR "${CMAKE_CURRENT_BINARY_DIR}/fi")
+
+    include(ExternalProject)
+    ExternalProject_Add(
+        fmt_external
+        PREFIX "${CMAKE_CURRENT_BINARY_DIR}/f"
+        URL "https://github.com/fmtlib/fmt/archive/refs/tags/${FMT_VERSION}.zip"
+        CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${FMT_DIR}
+        CMAKE_ARGS -DFMT_TEST:BOOL=OFF  # Don't build all the tests
+    )
+    add_dependencies(piper fmt_external)
+    add_dependencies(test_piper fmt_external)
+    endif()
+else()
+    find_package(fmt REQUIRED)
 endif()
 
 # ---- spdlog ---
 
-if(NOT DEFINED SPDLOG_DIR)
-  set(SPDLOG_DIR "${CMAKE_CURRENT_BINARY_DIR}/si")
-  set(SPDLOG_VERSION "1.12.0")
-  ExternalProject_Add(
-    spdlog_external
-    PREFIX "${CMAKE_CURRENT_BINARY_DIR}/s"
-    URL "https://github.com/gabime/spdlog/archive/refs/tags/v${SPDLOG_VERSION}.zip"
-    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SPDLOG_DIR}
-  )
-  add_dependencies(piper spdlog_external)
-  add_dependencies(test_piper spdlog_external)
+if (BUILD_EXTERNAL)
+    if(NOT DEFINED SPDLOG_DIR)
+    set(SPDLOG_DIR "${CMAKE_CURRENT_BINARY_DIR}/si")
+    set(SPDLOG_VERSION "1.12.0")
+    ExternalProject_Add(
+        spdlog_external
+        PREFIX "${CMAKE_CURRENT_BINARY_DIR}/s"
+        URL "https://github.com/gabime/spdlog/archive/refs/tags/v${SPDLOG_VERSION}.zip"
+        CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SPDLOG_DIR}
+    )
+    add_dependencies(piper spdlog_external)
+    add_dependencies(test_piper spdlog_external)
+    endif()
+else()
+    find_package(spdlog REQUIRED)
 endif()
 
 # ---- piper-phonemize ---
 
-if(NOT DEFINED PIPER_PHONEMIZE_DIR)
-  set(PIPER_PHONEMIZE_DIR "${CMAKE_CURRENT_BINARY_DIR}/pi")
-  ExternalProject_Add(
-    piper_phonemize_external
-    PREFIX "${CMAKE_CURRENT_BINARY_DIR}/p"
-    URL "https://github.com/rhasspy/piper-phonemize/archive/refs/heads/master.zip"
-    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${PIPER_PHONEMIZE_DIR}
-  )
-  add_dependencies(piper piper_phonemize_external)
-  add_dependencies(test_piper piper_phonemize_external)
+if (BUILD_EXTERNAL)
+    if(NOT DEFINED PIPER_PHONEMIZE_DIR)
+    set(PIPER_PHONEMIZE_DIR "${CMAKE_CURRENT_BINARY_DIR}/pi")
+    ExternalProject_Add(
+        piper_phonemize_external
+        PREFIX "${CMAKE_CURRENT_BINARY_DIR}/p"
+        URL "https://github.com/rhasspy/piper-phonemize/archive/refs/heads/master.zip"
+        CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${PIPER_PHONEMIZE_DIR}
+    )
+    add_dependencies(piper piper_phonemize_external)
+    add_dependencies(test_piper piper_phonemize_external)
+    endif()
+else()
+    find_package(piper_phonemize REQUIRED)
+    find_package(onnxruntime REQUIRED)
+    find_package(PkgConfig REQUIRED)
+    pkg_check_modules(espeak_ng REQUIRED IMPORTED_TARGET espeak-ng)
 endif()
 
 # ---- Declare executable ----
 
 if((NOT MSVC) AND (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")
-  target_link_libraries(piper -static-libgcc -static-libstdc++)
 
   set(PIPER_EXTRA_LIBRARIES "pthread")
 endif()
 
-target_link_libraries(piper
-  fmt
-  spdlog
-  espeak-ng
-  piper_phonemize
-  onnxruntime
-  ${PIPER_EXTRA_LIBRARIES}
-)
-
-target_link_directories(piper PUBLIC
-  ${FMT_DIR}/lib
-  ${SPDLOG_DIR}/lib
-  ${PIPER_PHONEMIZE_DIR}/lib
-)
-
-target_include_directories(piper PUBLIC
-  ${FMT_DIR}/include
-  ${SPDLOG_DIR}/include
-  ${PIPER_PHONEMIZE_DIR}/include
+if (BUILD_EXTERNAL)
+    target_link_libraries(piper -static-libgcc -static-libstdc++)
+    set_target_properties(piper PROPERTIES BUILD_RPATH_USE_ORIGIN true)
+
+    target_link_libraries(piper
+        fmt
+        spdlog
+        espeak-ng
+        piper_phonemize
+        onnxruntime
+        ${PIPER_EXTRA_LIBRARIES}
+    )
+
+    target_link_directories(piper PUBLIC
+        ${FMT_DIR}/lib
+        ${SPDLOG_DIR}/lib
+        ${PIPER_PHONEMIZE_DIR}/lib
+    )
+
+    target_include_directories(piper PUBLIC
+    ${FMT_DIR}/include
+    ${SPDLOG_DIR}/include
+    ${PIPER_PHONEMIZE_DIR}/include
+    )
+else()
+    target_link_libraries(piper
+        fmt::fmt
+        spdlog::spdlog
+        PkgConfig::espeak_ng
+        onnxruntime::onnxruntime
+        piper_phonemize
+        ${PIPER_EXTRA_LIBRARIES}
 )
+endif()
 
 target_compile_definitions(piper PUBLIC _PIPER_VERSION=${piper_version})
 
@@ -114,59 +146,74 @@ add_test(
 
 target_compile_features(test_piper PUBLIC cxx_std_17)
 
-target_include_directories(
-  test_piper PUBLIC
-  ${FMT_DIR}/include
-  ${SPDLOG_DIR}/include
-  ${PIPER_PHONEMIZE_DIR}/include
-)
-
-target_link_directories(
-  test_piper PUBLIC
-  ${FMT_DIR}/lib
-  ${SPDLOG_DIR}/lib
-  ${PIPER_PHONEMIZE_DIR}/lib
-)
+if (BUILD_EXTERNAL)
+    set_target_properties(test_piper PROPERTIES BUILD_RPATH_USE_ORIGIN true)
 
-target_link_libraries(test_piper PUBLIC
-  fmt
-  spdlog
-  espeak-ng
-  piper_phonemize
-  onnxruntime
-)
+    target_include_directories(
+        test_piper PUBLIC
+        ${FMT_DIR}/include
+        ${SPDLOG_DIR}/include
+        ${PIPER_PHONEMIZE_DIR}/include
+    )
+
+    target_link_directories(
+        test_piper PUBLIC
+        ${FMT_DIR}/lib
+        ${SPDLOG_DIR}/lib
+        ${PIPER_PHONEMIZE_DIR}/lib
+    )
+
+    target_link_libraries(test_piper PUBLIC
+        fmt
+        spdlog
+        espeak-ng
+        piper_phonemize
+        onnxruntime
+    )
+else()
+    target_link_libraries(test_piper
+        fmt::fmt
+        spdlog::spdlog
+        onnxruntime::onnxruntime
+        PkgConfig::espeak_ng
+        piper_phonemize
+        ${PIPER_EXTRA_LIBRARIES}
+    )
+endif()
 
 # ---- Declare install targets ----
 
 install(
   TARGETS piper
-  DESTINATION ${CMAKE_INSTALL_PREFIX})
+  DESTINATION ${CMAKE_INSTALL_BINDIR})
 
 # Dependencies
-install(
-  DIRECTORY ${PIPER_PHONEMIZE_DIR}/bin/
-  DESTINATION ${CMAKE_INSTALL_PREFIX}
-  USE_SOURCE_PERMISSIONS  # keep +x
-  FILES_MATCHING
-  PATTERN "piper_phonemize"
-  PATTERN "espeak-ng"
-  PATTERN "*.dll"
-)
-
-install(
-  DIRECTORY ${PIPER_PHONEMIZE_DIR}/lib/
-  DESTINATION ${CMAKE_INSTALL_PREFIX}
-  FILES_MATCHING
-  PATTERN "*.dll"
-  PATTERN "*.so*"
-)
-
-install(
-  DIRECTORY ${PIPER_PHONEMIZE_DIR}/share/espeak-ng-data
-  DESTINATION ${CMAKE_INSTALL_PREFIX}
-)
-
-install(
-  FILES ${PIPER_PHONEMIZE_DIR}/share/libtashkeel_model.ort
-  DESTINATION ${CMAKE_INSTALL_PREFIX}
-)
+if (BUILD_EXTERNAL)
+    install(
+        DIRECTORY ${PIPER_PHONEMIZE_DIR}/bin/
+        DESTINATION ${CMAKE_INSTALL_PREFIX}
+        USE_SOURCE_PERMISSIONS  # keep +x
+        FILES_MATCHING
+        PATTERN "piper_phonemize"
+        PATTERN "espeak-ng"
+        PATTERN "*.dll"
+    )
+
+    install(
+        DIRECTORY ${PIPER_PHONEMIZE_DIR}/lib/
+        DESTINATION ${CMAKE_INSTALL_PREFIX}
+        FILES_MATCHING
+        PATTERN "*.dll"
+        PATTERN "*.so*"
+    )
+
+    install(
+        DIRECTORY ${PIPER_PHONEMIZE_DIR}/share/espeak-ng-data
+        DESTINATION ${CMAKE_INSTALL_PREFIX}
+    )
+
+    install(
+        FILES ${PIPER_PHONEMIZE_DIR}/share/libtashkeel_model.ort
+        DESTINATION ${CMAKE_INSTALL_PREFIX}
+    )
+endif()
openSUSE Build Service is sponsored by