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 ti 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} "$") add_custom_command( OUTPUT "${DATA_DIST_DIR}/intonations" COMMAND ${ESPEAK_RUN_CMD} --compile-intonations WORKING_DIRECTORY "${PHONEME_SRC_DIR}" COMMENT "Compile intonations" DEPENDS "$" "${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 ${ESPEAK_RUN_CMD} --compile-phonemes WORKING_DIRECTORY "${PHONEME_SRC_DIR}" COMMENT "Compile phonemes" DEPENDS "${DATA_DIST_DIR}/intonations" "$" ${_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 ${CMAKE_COMMAND} -E copy ${_dict_deps} "${DICT_TMP_DIR}/" COMMAND ${ESPEAK_RUN_CMD} --compile=${_dict_name} WORKING_DIRECTORY "${DICT_TMP_DIR}" DEPENDS "$" "${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 "$" "${_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)