Warning, /pim/trojita/cmake/FindQt5LinguistForTrojita.cmake is written in an unsupported language. File is not indexed.
0001 # check for lupdate and lrelease: we can't 0002 # do it using qmake as it doesn't have 0003 # QMAKE_LUPDATE and QMAKE_LRELEASE variables :( 0004 # 0005 # I18N_LANGUAGE - if not empty, wraps only chosen language 0006 # 0007 0008 get_filename_component(LINGUIST_PATH ${Qt5LinguistTools_DIR} PATH) 0009 get_filename_component(LINGUIST_PATH ${LINGUIST_PATH} PATH) 0010 get_filename_component(LINGUIST_PATH ${LINGUIST_PATH} PATH) 0011 set(LINGUIST_PATH ${LINGUIST_PATH}/bin) 0012 0013 if(TARGET Qt5::lupdate) 0014 set(QT_LUPDATE_EXECUTABLE Qt5::lupdate) 0015 else(TARGET Qt5::lupdate) 0016 FIND_PROGRAM(QT_LUPDATE_EXECUTABLE NAMES lupdate-qt5 lupdate PATHS 0017 ${LINGUIST_PATH} 0018 NO_DEFAULT_PATH 0019 ) 0020 endif(TARGET Qt5::lupdate) 0021 0022 if(QT_LUPDATE_EXECUTABLE) 0023 message(STATUS "Found lupdate: ${QT_LUPDATE_EXECUTABLE}") 0024 else(QT_LUPDATE_EXECUTABLE) 0025 if(Qt5LinguistForTrojita_FIND_REQUIRED) 0026 message(FATAL_ERROR "Could NOT find lupdate") 0027 else() 0028 message(WARNING "Could NOT find lupdate") 0029 endif() 0030 endif(QT_LUPDATE_EXECUTABLE) 0031 0032 if(TARGET Qt5::lrelease) 0033 set(QT_LRELEASE_EXECUTABLE Qt5::lrelease) 0034 else(TARGET Qt5::lrelease) 0035 FIND_PROGRAM(QT_LRELEASE_EXECUTABLE NAMES lrelease-qt5 lrelease PATHS 0036 ${LINGUIST_PATH} 0037 NO_DEFAULT_PATH 0038 ) 0039 endif(TARGET Qt5::lrelease) 0040 0041 if(QT_LRELEASE_EXECUTABLE) 0042 message(STATUS "Found lrelease: ${QT_LRELEASE_EXECUTABLE}") 0043 else(QT_LRELEASE_EXECUTABLE) 0044 if(Qt5LinguistForTrojita_FIND_REQUIRED) 0045 message(FATAL_ERROR "Could NOT find lrelease") 0046 else() 0047 message(WARNING "Could NOT find lrelease") 0048 endif() 0049 endif(QT_LRELEASE_EXECUTABLE) 0050 0051 if(TARGET Qt5::lconvert) 0052 set(QT_LCONVERT_EXECUTABLE Qt5::lconvert) 0053 else(TARGET Qt5::lconvert) 0054 FIND_PROGRAM(QT_LCONVERT_EXECUTABLE NAMES lconvert-qt5 lconvert PATHS 0055 ${LINGUIST_PATH} 0056 NO_DEFAULT_PATH 0057 ) 0058 endif(TARGET Qt5::lconvert) 0059 0060 if(QT_LCONVERT_EXECUTABLE) 0061 message(STATUS "Found lconvert: ${QT_LCONVERT_EXECUTABLE}") 0062 else(QT_LCONVERT_EXECUTABLE) 0063 if(Qt5LinguistForTrojita_FIND_REQUIRED) 0064 message(FATAL_ERROR "Could NOT find lconvert") 0065 else() 0066 message(WARNING "Could NOT find lconvert") 0067 endif() 0068 endif(QT_LCONVERT_EXECUTABLE) 0069 0070 mark_as_advanced(QT_LUPDATE_EXECUTABLE QT_LRELEASE_EXECUTABLE QT_LCONVERT_EXECUTABLE) 0071 0072 if(QT_LUPDATE_EXECUTABLE AND QT_LRELEASE_EXECUTABLE AND QT_LCONVERT_EXECUTABLE) 0073 set(Qt5LinguistForTrojita_FOUND TRUE) 0074 0075 # QT5_WRAP_TS(outfiles infiles ...) 0076 # outfiles receives .qm generated files from 0077 # .ts files in arguments 0078 # a target lupdate is created for you 0079 # update/generate your translations files 0080 # example: QT5_WRAP_TS(foo_QM ${foo_TS}) 0081 MACRO (QT5_WRAP_TS outfiles) 0082 # a target to manually run lupdate 0083 #ADD_CUSTOM_TARGET(lupdate 0084 #COMMAND ${QT_LUPDATE_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR} -ts ${ARGN} 0085 #WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 0086 #) 0087 FOREACH (it ${ARGN}) 0088 GET_FILENAME_COMPONENT(it ${it} ABSOLUTE) 0089 GET_FILENAME_COMPONENT(outfile ${it} NAME_WE) 0090 0091 SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.qm) 0092 ADD_CUSTOM_COMMAND(OUTPUT ${outfile} 0093 COMMAND ${QT_LRELEASE_EXECUTABLE} 0094 ARGS -compress -removeidentical -silent ${it} -qm ${outfile} 0095 DEPENDS ${it} 0096 ) 0097 0098 SET(${outfiles} ${${outfiles}} ${outfile}) 0099 ENDFOREACH (it) 0100 ENDMACRO (QT5_WRAP_TS) 0101 0102 # QT_WRAP_PO(outfiles infiles ...) 0103 # outfiles receives .qm generated files from 0104 # .po files in arguments 0105 # example: QT5_WRAP_PO(foo_TS ${foo_PO}) 0106 MACRO (QT5_WRAP_PO outfiles) 0107 FOREACH (it ${ARGN}) 0108 GET_FILENAME_COMPONENT(it ${it} ABSOLUTE) 0109 # PO files are foo-en_GB.po not foo_en_GB.po like Qt expects 0110 GET_FILENAME_COMPONENT(fileWithDash ${it} NAME_WE) 0111 if(NOT I18N_LANGUAGE) 0112 set(do_wrap ON) 0113 else(NOT I18N_LANGUAGE) 0114 string(REGEX MATCH "${I18N_LANGUAGE}" ln ${fileWithDash}) 0115 if(ln) 0116 set(do_wrap ON) 0117 else(ln) 0118 set(do_wrap OFF) 0119 endif(ln) 0120 endif(NOT I18N_LANGUAGE) 0121 if(do_wrap) 0122 STRING(REPLACE "-" "_" filenameBase "${fileWithDash}") 0123 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/locale) 0124 SET(tsfile ${CMAKE_CURRENT_BINARY_DIR}/locale/${filenameBase}.ts) 0125 SET(qmfile ${CMAKE_CURRENT_BINARY_DIR}/locale/${filenameBase}.qm) 0126 0127 if (NOT EXISTS "${it}") 0128 GET_FILENAME_COMPONENT(path ${it} PATH) 0129 STRING(REGEX MATCH "[^-]+$" lang "${fileWithDash}") 0130 set (it "${path}/${lang}.po") 0131 endif (NOT EXISTS "${it}") 0132 0133 # lconvert from PO to TS and then run lupdate to generate the correct strings 0134 # finally run lrelease as used above 0135 ADD_CUSTOM_COMMAND(OUTPUT ${qmfile} 0136 COMMAND ${QT_LCONVERT_EXECUTABLE} 0137 ARGS -i ${it} -o ${tsfile} 0138 COMMAND ${QT_LUPDATE_EXECUTABLE} 0139 ARGS ${CMAKE_CURRENT_SOURCE_DIR} -silent -noobsolete -ts ${tsfile} 0140 COMMAND ${QT_LRELEASE_EXECUTABLE} 0141 ARGS -compress -removeidentical -nounfinished -silent ${tsfile} -qm ${qmfile} 0142 DEPENDS ${it} 0143 ) 0144 0145 SET(${outfiles} ${${outfiles}} ${qmfile}) 0146 endif(do_wrap) 0147 ENDFOREACH (it) 0148 ENDMACRO (QT5_WRAP_PO) 0149 0150 else(QT_LUPDATE_EXECUTABLE AND QT_LRELEASE_EXECUTABLE AND QT_LCONVERT_EXECUTABLE) 0151 set(Qt5LinguistForTrojita_FOUND FALSE) 0152 endif(QT_LUPDATE_EXECUTABLE AND QT_LRELEASE_EXECUTABLE AND QT_LCONVERT_EXECUTABLE)