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)