@@ -20,13 +20,15 @@ project("RHVoice")
set(customCMakeModulesDir "${CMAKE_SOURCE_DIR}/cmake")
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${customCMakeModulesDir}" "${customCMakeModulesDir}/thirdparty/sanitizers/cmake")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
+
include(FindPkgConfig)
include(GNUInstallDirs)
include(CPackComponent)
include(Hardening)
include(VersionFromGit)
find_package(Sanitizers)
-getVersionFromGit("RHVOICE" "1.2.2")
if(${CMAKE_VERSION} VERSION_GREATER "3.12")
set(CMAKE_CXX_STANDARD 20)
@@ -101,7 +101,6 @@ function(setupPIC target)
message(STATUS "Working around Clang bug https://bugs.llvm.org/show_bug.cgi?id=44594 ...")
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 11)
list(APPEND HARDENING_PIC_LINKER_FLAGS
- "--ld-path=\"${CLANG_WORKAROUND_SCRIPT}\""
)
else()
list(APPEND HARDENING_PIC_LINKER_FLAGS
@@ -29,6 +29,8 @@ set("ISO639_1_NAME2CODE_Macedonian" "mk")
set("ISO639_1_NAME2CODE_Albanian" "sq")
set("ISO639_1_NAME2CODE_Tatar" "tt")
+set("ISO639_1_NAME2CODE_Polish" "pl")
+
function(createLangCodeToNameMapping)
get_cmake_property(varsHere VARIABLES)
foreach(varName ${varsHere})
@@ -83,6 +85,10 @@ set("VOICE_hana_LANG" "sq")
set("VOICE_talgat_LANG" "tt")
+set("VOICE_magda_LANG" "pl")
+set("VOICE_natan_LANG" "ka")
+set("VOICE_suze_LANG" "mk")
+
cpack_add_component_group("data"
DISPLAY_NAME "Data files"
DESCRIPTION "Various data required for synthesis"
@@ -14,7 +14,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
-
file(GLOB_RECURSE SRCFILES "${CMAKE_CURRENT_SOURCE_DIR}/*.c" "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
# database files, included into needed places
@@ -32,10 +31,24 @@ else()
list(REMOVE_ITEM SRCFILES "${CMAKE_CURRENT_SOURCE_DIR}/mage_hts_engine_impl.cpp")
endif()
-add_library(RHVoice_core SHARED "${SRCFILES}")
-set_target_properties(RHVoice_core PROPERTIES VERSION "${RHVOICE_VERSION}" SOVERSION "${RHVOICE_VERSION_MAJOR}")
+add_library(RHVoice_core STATIC "${SRCFILES}")
+set_target_properties(RHVoice_core PROPERTIES OUTPUT_NAME "RHVoice_core" CLEAN_DIRECT_OUTPUT 1)
set(libs2link "libhts_engine")
-target_include_directories(RHVoice_core PUBLIC "${INCLUDE_DIR}" PRIVATE "${HTS_LABELS_KIT_INCLUDES}")
+
+file(GLOB BOOST_MODULE_DIRS "${CMAKE_SOURCE_DIR}/external/libs/boost/libs/*")
+set(BOOST_MODULE_PATHS "")
+
+foreach(module_dir ${BOOST_MODULE_DIRS})
+ if(IS_DIRECTORY "${module_dir}")
+ set(include_dir "${module_dir}/include")
+ if(EXISTS "${include_dir}")
+ list(APPEND BOOST_MODULE_PATHS "${include_dir}")
+ message(STATUS "Adding Boost module: ${include_dir}")
+ endif()
+ endif()
+endforeach()
+
+target_include_directories(RHVoice_core PUBLIC "${INCLUDE_DIR}" PRIVATE "${HTS_LABELS_KIT_INCLUDES}" PRIVATE ${BOOST_MODULE_PATHS})
set(package_name "RHVoice_core")
@@ -129,7 +129,7 @@ namespace RHVoice
return true;
if(prev_token.type==content_key)
return false;
- std::vector<utf8::uint32_t>::const_iterator final_punctuation_start=std::find_if(prev_token.text.rbegin(),prev_token.text.rend(),std::not1(str::is_punct())).base();
+ std::vector<utf8::uint32_t>::const_iterator final_punctuation_start=std::find_if(prev_token.text.rbegin(),prev_token.text.rend(),std::not_fn(str::is_punct())).base();
if(final_punctuation_start==prev_token.text.end())
return false;
if(prev_token.text.back()=='.')
@@ -307,7 +307,7 @@ namespace RHVoice
if(start!=input.end())
{
sym=*start;
- end=std::find_if(start,input.end(),std::not1(str::is_adigit()));
+ end=std::find_if(start,input.end(),std::not_fn(str::is_adigit()));
if(start==end)
++end;
else
@@ -495,7 +495,7 @@ namespace RHVoice
{
if(markup_info.say_as!=content_text)
return text_start;
- text_iterator whitespace_end=std::find_if(text_start,text_end,std::not1(str::is_space()));
+ text_iterator whitespace_end=std::find_if(text_start,text_end,std::not_fn(str::is_space()));
if(whitespace_end!=text_start)
prev_token.whitespace.insert(prev_token.whitespace.end(),text_start,whitespace_end);
return whitespace_end;
@@ -50,6 +50,7 @@ namespace RHVoice
struct init_params
{
init_params();
+ init_params(const std::string& custom_data_path, const std::string& custom_config_path);
std::string data_path, config_path, pkg_path;
std::vector<std::string> resource_paths;
std::shared_ptr<event_logger> logger;
@@ -416,7 +416,7 @@ namespace RHVoice
iterator& operator++()
{
- first=std::find_if(last,end,std::not1(is_delimiter));
+ first=std::find_if(last,end,std::not_fn(is_delimiter));
last=std::find_if(first,end,is_delimiter);
value.assign(first.base(),last.base());
return *this;
@@ -23,7 +23,7 @@ else()
set(SRCFILES2 "")
endif()
-add_library(libhts_engine SHARED "${SRCFILES1}" "${SRCFILES2}")
+add_library(libhts_engine STATIC "${SRCFILES1}" "${SRCFILES2}")
target_compile_definitions(libhts_engine PRIVATE "-DAUDIO_PLAY_NONE")
set(LIBHTS_VERSION_MAJOR 1)
@@ -37,6 +37,7 @@ set(CPACK_COMPONENT_LIBHTS_ENGINE_VERSION_MINOR "${LIBHTS_VERSION_MINOR}")
set(CPACK_COMPONENT_LIBHTS_ENGINE_VERSION_PATCH "${LIBHTS_VERSION_PATCH}")
set(CPACK_COMPONENT_LIBHTS_ENGINE_VERSION "${LIBHTS_VERSION}")
+target_link_libraries(libhts_engine PRIVATE RHVoice_core)
target_include_directories(libhts_engine PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" "${INCLUDE_DIR}")
if(NOT MSVC)
target_link_libraries(libhts_engine PUBLIC m)
@@ -15,7 +15,7 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
file(GLOB_RECURSE SRCFILES "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
-add_library(libmage SHARED "${SRCFILES}")
+add_library(libmage STATIC "${SRCFILES}")
set(LIBMAGE_VERSION_MAJOR "2")
set(LIBMAGE_VERSION_MINOR "0")
@@ -29,7 +29,7 @@ set(CPACK_COMPONENT_LIBMAGE_VERSION_PATCH "${LIBMAGE_VERSION_PATCH}")
set(CPACK_COMPONENT_LIBMAGE_VERSION "${LIBMAGE_VERSION}")
target_include_directories(libmage PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
-target_link_libraries(libmage "libhts_engine" "RHVoice_question_match")
+target_link_libraries(libmage "libhts_engine")
harden(libmage)
add_sanitizers(libmage)
set_target_properties("libmage" PROPERTIES PREFIX "")
@@ -24,6 +24,7 @@ pkg_check_modules(LIBPULSESIMPLE "libpulse-simple")
option(WITH_LIBAO "Support libao" "${LIBAO_FOUND}")
option(WITH_PULSE "Support pulseaudio" "${LIBPULSESIMPLE_FOUND}")
option(WITH_PORTAUDIO "Support portaudio" "${LIBPORTAUDIO_FOUND}")
+set(WITH_PORTAUDIO ON)
if(WITH_LIBAO)
list(APPEND SOURCES "libao.cpp")
@@ -51,10 +52,25 @@ if(WITH_PULSE)
target_link_libraries(RHVoice_audio "${LIBPULSESIMPLE_LIBRARIES}")
target_include_directories(RHVoice_audio PRIVATE "${LIBPULSESIMPLE_INCLUDE_DIRS}")
endif()
+
+if(TARGET RHVoice_core)
+ target_link_libraries(RHVoice_audio PRIVATE RHVoice_core)
+ message(STATUS "Linking RHVoice_audio with RHVoice_core")
+else()
+ message(WARNING "RHVoice_core target not found")
+endif()
if(WITH_PORTAUDIO)
- target_compile_definitions(RHVoice_audio PUBLIC WITH_PORTAUDIO)
- target_link_libraries(RHVoice_audio "${LIBPORTAUDIO_LIBRARIES}")
- target_include_directories(RHVoice_audio PRIVATE "${LIBPORTAUDIO_INCLUDE_DIRS}")
+ target_compile_definitions(RHVoice_audio PUBLIC WITH_PORTAUDIO)
+ set(PORTAUDIO_LIB_DIR "${CMAKE_SOURCE_DIR}/../../../lycium/usr/portaudio/${OHOS_ARCH}/lib")
+ set(PORTAUDIO_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../../../lycium/usr/portaudio/${OHOS_ARCH}/include")
+
+ if(EXISTS "${PORTAUDIO_LIB_DIR}/libportaudio.so")
+ target_link_libraries(RHVoice_audio PRIVATE "${PORTAUDIO_LIB_DIR}/libportaudio.so")
+ target_include_directories(RHVoice_audio PRIVATE "${PORTAUDIO_INCLUDE_DIR}")
+ message(STATUS "Linking with PortAudio: ${PORTAUDIO_LIB_DIR}/libportaudio.so")
+ else()
+ message(WARNING "PortAudio library not found at ${PORTAUDIO_LIB_DIR}/libportaudio.so")
+ endif()
endif()
cpack_add_component(audio