Warning, /graphics/kst-plot/cmake/modules/FindLinguistForKst.cmake is written in an unsupported language. File is not indexed.
0001 # Adapted from [trojita.git] / cmake / FindLinguistForTrojita.cmake
0002 # check for lupdate and lrelease: we can't
0003 # do it using qmake as it doesn't have
0004 # QMAKE_LUPDATE and QMAKE_LRELEASE variables :(
0005 #
0006 # I18N_LANGUAGE - if not empty, wraps only chosen language
0007 #
0008
0009 # One problem is that FindQt4.cmake will look for these and cache the results
0010 # If users have lrelease from Qt3 (e.g., Debian, Ubuntu)
0011 # then we will fail.
0012
0013 # TODO
0014 if(RUN_DISABLED_CODE)
0015 # First remove these from cache
0016 set(QT_LUPDATE_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE)
0017 set(QT_LRELEASE_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE)
0018 set(QT_LCONVERT_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE)
0019
0020 FIND_PROGRAM(QT_LUPDATE_EXECUTABLE NAMES lupdate-qt4 lupdate PATHS
0021 "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/bin"
0022 "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/bin"
0023 $ENV{QTDIR}/bin
0024 )
0025
0026 if(QT_LUPDATE_EXECUTABLE)
0027 message(STATUS "Found lupdate: ${QT_LUPDATE_EXECUTABLE}")
0028 else(QT_LUPDATE_EXECUTABLE)
0029 if(LinguistForKst_FIND_REQUIRED)
0030 message(FATAL_ERROR "Could NOT find lupdate")
0031 endif(LinguistForKst_FIND_REQUIRED)
0032 endif(QT_LUPDATE_EXECUTABLE)
0033
0034 FIND_PROGRAM(QT_LRELEASE_EXECUTABLE NAMES lrelease-qt4 lrelease PATHS
0035 "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/bin"
0036 "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/bin"
0037 $ENV{QTDIR}/bin
0038 )
0039
0040 if(QT_LRELEASE_EXECUTABLE)
0041 message(STATUS "Found lrelease: ${QT_LRELEASE_EXECUTABLE}")
0042 else(QT_LRELEASE_EXECUTABLE)
0043 if(LinguistForKst_FIND_REQUIRED)
0044 message(FATAL_ERROR "Could NOT find lrelease")
0045 endif(LinguistForKst_FIND_REQUIRED)
0046 endif(QT_LRELEASE_EXECUTABLE)
0047
0048 FIND_PROGRAM(QT_LCONVERT_EXECUTABLE NAMES lconvert-qt4 lconvert PATHS
0049 "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/bin"
0050 "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/bin"
0051 $ENV{QTDIR}/bin
0052 )
0053
0054 if(QT_LCONVERT_EXECUTABLE)
0055 message(STATUS "Found lconvert: ${QT_LCONVERT_EXECUTABLE}")
0056 else(QT_LCONVERT_EXECUTABLE)
0057 if(LinguistForKst_FIND_REQUIRED)
0058 message(FATAL_ERROR "Could NOT find lconvert")
0059 endif(LinguistForKst_FIND_REQUIRED)
0060 endif(QT_LCONVERT_EXECUTABLE)
0061
0062 mark_as_advanced(QT_LUPDATE_EXECUTABLE QT_LRELEASE_EXECUTABLE QT_LCONVERT_EXECUTABLE)
0063
0064 endif(RUN_DISABLED_CODE)
0065
0066 find_program(QT_LCONVERT_EXECUTABLE NAMES lconvert-qt4 lconvert)
0067
0068
0069 if(NOT QT_LUPDATE_EXECUTABLE OR NOT QT_LRELEASE_EXECUTABLE OR NOT QT_LCONVERT_EXECUTABLE)
0070 # fall back to global tools if FindQt failed
0071 set(QT_LUPDATE_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE)
0072 set(QT_LRELEASE_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE)
0073 set(QT_LCONVERT_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE)
0074 FIND_PROGRAM(QT_LUPDATE_EXECUTABLE NAMES lupdate-qt4 lupdate PATHS /usr/bin)
0075 FIND_PROGRAM(QT_LRELEASE_EXECUTABLE NAMES lrelease-qt4 lrelease PATHS /usr/bin)
0076 FIND_PROGRAM(QT_LCONVERT_EXECUTABLE NAMES lconvert-qt4 lconvert PATHS /usr/bin)
0077 endif()
0078
0079
0080 if(QT_LUPDATE_EXECUTABLE AND QT_LRELEASE_EXECUTABLE AND QT_LCONVERT_EXECUTABLE)
0081 set(LinguistForKst_FOUND TRUE)
0082
0083 # QT4_WRAP_TS(outfiles infiles ...)
0084 # outfiles receives .qm generated files from
0085 # .ts files in arguments
0086 # a target lupdate is created for you
0087 # update/generate your translations files
0088 # example: QT4_WRAP_TS(foo_QM ${foo_TS})
0089 MACRO (QT4_WRAP_TS outfiles)
0090 # a target to manually run lupdate
0091 #ADD_CUSTOM_TARGET(lupdate
0092 #COMMAND ${QT_LUPDATE_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR} -ts ${ARGN}
0093 #WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0094 #)
0095 FOREACH (it ${ARGN})
0096 GET_FILENAME_COMPONENT(it ${it} ABSOLUTE)
0097 GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
0098
0099 SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.qm)
0100 ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
0101 COMMAND ${QT_LRELEASE_EXECUTABLE}
0102 ARGS -compress -removeidentical -silent ${it} -qm ${outfile}
0103 DEPENDS ${it}
0104 )
0105
0106 SET(${outfiles} ${${outfiles}} ${outfile})
0107 ENDFOREACH (it)
0108 ENDMACRO (QT4_WRAP_TS)
0109
0110 # QT_WRAP_PO(outfiles infiles ...)
0111 # outfiles receives .qm generated files from
0112 # .po files in arguments
0113 # example: QT4_WRAP_PO(foo_TS ${foo_PO})
0114 MACRO (QT4_WRAP_PO outfiles)
0115 FOREACH (it ${ARGN})
0116 GET_FILENAME_COMPONENT(it ${it} ABSOLUTE)
0117 # PO files are foo-en_GB.po not foo_en_GB.po like Qt expects
0118 GET_FILENAME_COMPONENT(fileWithDash ${it} NAME_WE)
0119 if(NOT I18N_LANGUAGE)
0120 set(do_wrap ON)
0121 else(NOT I18N_LANGUAGE)
0122 string(REGEX MATCH "${I18N_LANGUAGE}" ln ${fileWithDash})
0123 if(ln)
0124 set(do_wrap ON)
0125 else(ln)
0126 set(do_wrap OFF)
0127 endif(ln)
0128 endif(NOT I18N_LANGUAGE)
0129 if(do_wrap)
0130 STRING(REPLACE "-" "_" filenameBase "${fileWithDash}")
0131 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/locale)
0132 SET(tsfile ${CMAKE_CURRENT_BINARY_DIR}/locale/${filenameBase}.ts)
0133 SET(qmfile ${CMAKE_CURRENT_BINARY_DIR}/locale/${filenameBase}.qm)
0134
0135 if (NOT EXISTS "${it}")
0136 GET_FILENAME_COMPONENT(path ${it} PATH)
0137 STRING(REGEX MATCH "[^-]+$" lang "${fileWithDash}")
0138 set (it "${path}/${lang}.po")
0139 endif (NOT EXISTS "${it}")
0140
0141 # lconvert from PO to TS and then run lupdate to generate the correct strings
0142 # finally run lrelease as used above
0143 ADD_CUSTOM_COMMAND(OUTPUT ${qmfile}
0144 COMMAND ${QT_LCONVERT_EXECUTABLE}
0145 ARGS -i ${it} -o ${tsfile}
0146 COMMAND ${QT_LUPDATE_EXECUTABLE}
0147 ARGS ${CMAKE_CURRENT_SOURCE_DIR} -silent -noobsolete -ts ${tsfile}
0148 COMMAND ${QT_LRELEASE_EXECUTABLE}
0149 ARGS -compress -removeidentical -silent ${tsfile} -qm ${qmfile}
0150 DEPENDS ${it}
0151 )
0152 SET(${outfiles} ${${outfiles}} ${qmfile})
0153 endif(do_wrap)
0154 ENDFOREACH (it)
0155 ENDMACRO (QT4_WRAP_PO)
0156
0157 else(QT_LUPDATE_EXECUTABLE AND QT_LRELEASE_EXECUTABLE AND QT_LCONVERT_EXECUTABLE)
0158 set(LinguistForKst_FOUND FALSE)
0159 endif(QT_LUPDATE_EXECUTABLE AND QT_LRELEASE_EXECUTABLE AND QT_LCONVERT_EXECUTABLE)