123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- 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} "$<TARGET_FILE:espeak-ng-bin>")
-
- add_custom_command(
- OUTPUT "${DATA_DIST_DIR}/intonations"
- 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 ${ESPEAK_RUN_CMD} --compile-phonemes
- WORKING_DIRECTORY "${PHONEME_SRC_DIR}"
- COMMENT "Compile phonemes"
- DEPENDS
- "${DATA_DIST_DIR}/intonations"
- "$<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 ${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)
|