mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
174 lines
4.7 KiB
CMake
174 lines
4.7 KiB
CMake
list(APPEND _dict_compile_list
|
|
af am an ar as az
|
|
ba be bg bn bpy bs
|
|
ca chr cmn cs cv cy
|
|
da de
|
|
el en eo es et eu
|
|
fa fi fr
|
|
ga gd gn grc gu
|
|
hak haw he hi hr ht hu hy
|
|
ia id io is it
|
|
ja jbo
|
|
ka kk kl kn kok ko ku ky
|
|
la lb lfn lt lv
|
|
mi mk ml mr ms mto mt my
|
|
nci ne nl nog no
|
|
om or
|
|
pap pa piqd pl pt py
|
|
qdb quc qu qya
|
|
ro ru
|
|
sd shn si sjn sk sl smj sq sr sv sw
|
|
ta te th tk tn tr tt
|
|
ug uk ur uz
|
|
vi
|
|
yue
|
|
)
|
|
|
|
list(APPEND _mbrola_lang_list
|
|
af1 ar1 ar2
|
|
ca cmn cr1 cs
|
|
de2 de4 de6 de8
|
|
ee1 en1 es es3 es4
|
|
fr
|
|
gr1 gr2 grc-de6
|
|
he hn1 hu1
|
|
ic1 id1 in ir1 it1 it3
|
|
jp
|
|
la1 lt
|
|
ma1 mx1 mx2
|
|
nl nz1
|
|
pl1 pt1 ptbr ptbr4
|
|
ro1
|
|
sv sv2
|
|
tl1 tr1
|
|
us us3
|
|
vz
|
|
)
|
|
|
|
set(DATA_DIST_ROOT ${CMAKE_CURRENT_BINARY_DIR})
|
|
set(DATA_DIST_DIR ${DATA_DIST_ROOT}/espeak-ng-data)
|
|
set(PHONEME_TMP_DIR ${DATA_DIST_ROOT}/phsource)
|
|
set(DICT_TMP_DIR ${DATA_DIST_ROOT}/dictsource)
|
|
|
|
set(DATA_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/espeak-ng-data)
|
|
set(PHONEME_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/phsource)
|
|
set(DICT_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dictsource)
|
|
|
|
file(MAKE_DIRECTORY "${DATA_DIST_DIR}")
|
|
file(MAKE_DIRECTORY "${DICT_TMP_DIR}")
|
|
file(COPY "${DATA_SRC_DIR}/lang" DESTINATION "${DATA_DIST_DIR}")
|
|
file(COPY "${DATA_SRC_DIR}/voices/!v" DESTINATION "${DATA_DIST_DIR}/voices")
|
|
file(COPY "${PHONEME_SRC_DIR}" DESTINATION "${DATA_DIST_ROOT}")
|
|
|
|
set(ESPEAK_RUN_ENV ${CMAKE_COMMAND} -E env "ESPEAK_DATA_PATH=${DATA_DIST_ROOT}")
|
|
set(ESPEAK_RUN_CMD ${ESPEAK_RUN_ENV} $ENV{VALGRIND} "$<TARGET_FILE:espeak-ng-bin>")
|
|
|
|
set(espeak_ng_dll_path "$<TARGET_FILE_DIR:espeak-ng>")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${DATA_DIST_DIR}/intonations"
|
|
COMMAND set "PATH=${espeak_ng_dll_path};%PATH%"
|
|
COMMAND ${ESPEAK_RUN_CMD} --compile-intonations
|
|
WORKING_DIRECTORY "${PHONEME_SRC_DIR}"
|
|
COMMENT "Compile intonations"
|
|
DEPENDS
|
|
"$<TARGET_FILE:espeak-ng-bin>"
|
|
"${PHONEME_SRC_DIR}/intonation"
|
|
)
|
|
|
|
set(_phon_deps "")
|
|
|
|
function(check_phon_deps _file)
|
|
set(_file "${PHONEME_SRC_DIR}/${_file}")
|
|
list(APPEND _phon_deps "${_file}")
|
|
|
|
file(STRINGS "${_file}" _phon_incs REGEX "include .+")
|
|
list(TRANSFORM _phon_incs REPLACE "^[ \t]*include[ \t]+" "")
|
|
foreach(_inc ${_phon_incs})
|
|
check_phon_deps(${_inc})
|
|
endforeach(_inc)
|
|
set(_phon_deps ${_phon_deps} PARENT_SCOPE)
|
|
endfunction(check_phon_deps)
|
|
|
|
check_phon_deps("phonemes")
|
|
|
|
add_custom_command(
|
|
OUTPUT
|
|
"${DATA_DIST_DIR}/phondata"
|
|
"${DATA_DIST_DIR}/phondata-manifest"
|
|
"${DATA_DIST_DIR}/phonindex"
|
|
"${DATA_DIST_DIR}/phontab"
|
|
COMMAND set "PATH=${espeak_ng_dll_path};%PATH%"
|
|
COMMAND ${ESPEAK_RUN_CMD} --compile-phonemes
|
|
WORKING_DIRECTORY "${PHONEME_SRC_DIR}"
|
|
COMMENT "Compile phonemes"
|
|
DEPENDS
|
|
"$<TARGET_FILE:espeak-ng-bin>"
|
|
${_phon_deps}
|
|
)
|
|
|
|
list(APPEND _dict_targets)
|
|
list(APPEND _mbr_targets)
|
|
|
|
foreach(_dict_name ${_dict_compile_list})
|
|
set(_dict_target "${DATA_DIST_DIR}/${_dict_name}_dict")
|
|
set(_dict_deps "")
|
|
list(APPEND _dict_targets ${_dict_target})
|
|
list(APPEND _dict_deps
|
|
"${DICT_SRC_DIR}/${_dict_name}_rules"
|
|
"${DICT_SRC_DIR}/${_dict_name}_list"
|
|
)
|
|
|
|
if(EXISTS "${DICT_SRC_DIR}/extra/${_dict_name}_listx")
|
|
option(EXTRA_${_dict_name} "Compile extra ${_dict_name} dictionary" ON)
|
|
if(EXTRA_${_dict_name})
|
|
list(APPEND _dict_deps "${DICT_SRC_DIR}/extra/${_dict_name}_listx")
|
|
else()
|
|
file(REMOVE "${DICT_TMP_DIR}/${_dict_name}_listx")
|
|
endif()
|
|
elseif(EXISTS "${DICT_SRC_DIR}/${_dict_name}_listx")
|
|
list(APPEND _dict_deps "${DICT_SRC_DIR}/${_dict_name}_listx")
|
|
endif()
|
|
if(EXISTS "${DICT_SRC_DIR}/${_dict_name}_emoji")
|
|
list(APPEND _dict_deps "${DICT_SRC_DIR}/${_dict_name}_emoji")
|
|
endif()
|
|
|
|
add_custom_command(
|
|
OUTPUT "${_dict_target}"
|
|
COMMAND set "PATH=${espeak_ng_dll_path};%PATH%"
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${_dict_deps} "${DICT_TMP_DIR}/"
|
|
COMMAND ${ESPEAK_RUN_CMD} --compile=${_dict_name}
|
|
WORKING_DIRECTORY "${DICT_TMP_DIR}"
|
|
DEPENDS
|
|
"$<TARGET_FILE:espeak-ng-bin>"
|
|
"${DATA_DIST_DIR}/phondata"
|
|
"${DATA_DIST_DIR}/intonations"
|
|
${_dict_deps}
|
|
)
|
|
endforeach()
|
|
|
|
if (HAVE_MBROLA AND USE_MBROLA)
|
|
file(COPY "${DATA_SRC_DIR}/voices/mb" DESTINATION "${DATA_DIST_DIR}/voices")
|
|
file(MAKE_DIRECTORY "${DATA_DIST_DIR}/mbrola_ph")
|
|
foreach(_mbl ${_mbrola_lang_list})
|
|
set(_mbl_src "${PHONEME_SRC_DIR}/mbrola/${_mbl}")
|
|
set(_mbl_out "${DATA_DIST_DIR}/mbrola_ph/${_mbl}_phtrans")
|
|
list(APPEND _mbr_targets ${_mbl_out})
|
|
add_custom_command(
|
|
OUTPUT "${_mbl_out}"
|
|
COMMAND ${ESPEAK_RUN_CMD} --compile-mbrola="${_mbl_src}"
|
|
DEPENDS "$<TARGET_FILE:espeak-ng-bin>" "${_mbl_src}"
|
|
)
|
|
endforeach(_mbl)
|
|
endif()
|
|
|
|
add_custom_target(
|
|
data ALL
|
|
DEPENDS
|
|
"${DATA_DIST_DIR}/intonations"
|
|
"${DATA_DIST_DIR}/phondata"
|
|
${_dict_targets}
|
|
${_mbr_targets}
|
|
)
|
|
install(DIRECTORY ${DATA_DIST_DIR} DESTINATION share)
|