Warning, /graphics/glaxnimate/cmake/qt.cmake is written in an unsupported language. File is not indexed.
0001 #
0002 # Copyright (C) 2015-2022 Mattia Basaglia
0003 #
0004 # This program is free software: you can redistribute it and/or modify
0005 # it under the terms of the GNU General Public License as published by
0006 # the Free Software Foundation, either version 3 of the License, or
0007 # (at your option) any later version.
0008 #
0009 # This program is distributed in the hope that it will be useful,
0010 # but WITHOUT ANY WARRANTY; without even the implied warranty of
0011 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0012 # GNU General Public License for more details.
0013 #
0014 # You should have received a copy of the GNU General Public License
0015 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0016 #
0017
0018 if (NOT DEFINED QT_VERSION_MAJOR)
0019 set(QT_VERSION_MAJOR 5)
0020 endif()
0021
0022 function(qt_linguist_command)
0023 cmake_parse_arguments(PARSE_ARGV 0 ARGS "" "COMMAND;OUTPUT" "")
0024
0025 string(TOUPPER ${ARGS_COMMAND} CMD_UPPER)
0026 set(varcheck "Qt${QT_VERSION_MAJOR}_${CMD_UPPER}_EXECUTABLE")
0027
0028 if(NOT "${${varcheck}}" STREQUAL "")
0029 set(${ARGS_OUTPUT} ${${varcheck}} PARENT_SCOPE)
0030 elseif(NOT "${QT_CMAKE_EXPORT_NAMESPACE}" STREQUAL "")
0031 set(${ARGS_OUTPUT} "${QT_CMAKE_EXPORT_NAMESPACE}::${ARGS_COMMAND}" PARENT_SCOPE)
0032 else()
0033 find_program(program NAMES ${ARGS_COMMAND})
0034 set(${ARGS_OUTPUT} ${program} PARENT_SCOPE)
0035 endif()
0036 endfunction()
0037
0038 # Creates a target to compile Qt linguist translations
0039 # Synopsis:
0040 # create_qt_linguist_translations(
0041 # TARGET target # Name of the target used to build/update translations
0042 # [DESTINATION directory] # Where to put the qm files
0043 # TRANSLATIONS file... # Source files for translations
0044 # SOURCES directory... # Where to find source files
0045 # [OUTPUT varname] # output variable name for the list of qm files (defaults to LINGUIST_OUTPUT_FILES)
0046 # )
0047 function(create_qt_linguist_translations)
0048 include(misc)
0049
0050 set(options)
0051 set(one_value DESTINATION TARGET)
0052 set(multi_value TRANSLATIONS SOURCES)
0053 cmake_parse_arguments(PARSE_ARGV 0 CREATE_QT_LINGUIST "${options}" "${one_value}" "${multi_value}")
0054 if ( NOT CREATE_QT_LINGUIST_DESTINATION )
0055 set(CREATE_QT_LINGUIST_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/translations")
0056 endif()
0057 if ( NOT CREATE_QT_LINGUIST_OUTPUT )
0058 set(CREATE_QT_LINGUIST_OUTPUT LINGUIST_OUTPUT_FILES)
0059 endif()
0060
0061 find_package(Qt${QT_VERSION_MAJOR}LinguistTools QUIET)
0062 if(${Qt${QT_VERSION_MAJOR}LinguistTools_FOUND})
0063 message(STATUS "Translations enabled")
0064 set(abs_ts)
0065 foreach(file ${CREATE_QT_LINGUIST_TRANSLATIONS})
0066 get_filename_component(file_abs ${file} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
0067 list(APPEND abs_ts ${file_abs})
0068 endforeach()
0069 add_custom_target(
0070 ${CREATE_QT_LINGUIST_TARGET}
0071 DEPENDS ${CREATE_QT_LINGUIST_TARGET}_cmd
0072 )
0073
0074 qt_linguist_command(COMMAND lupdate OUTPUT lupdate_cmd)
0075 qt_linguist_command(COMMAND lrelease OUTPUT lrelease_cmd)
0076
0077 message(STATUS "Qt linguist commands: '${lupdate_cmd}' '${lrelease_cmd}'")
0078 add_custom_command(
0079 OUTPUT ${CREATE_QT_LINGUIST_TARGET}_cmd
0080 COMMAND ${lupdate_cmd} ${CREATE_QT_LINGUIST_SOURCES} -ts ${abs_ts}
0081 COMMAND ${CMAKE_COMMAND} -E make_directory ${CREATE_QT_LINGUIST_DESTINATION}
0082 )
0083 set(abs_qm)
0084 foreach(file ${abs_ts})
0085 get_filename_component(file_basename ${file} NAME_WLE)
0086 add_custom_command(
0087 OUTPUT ${CREATE_QT_LINGUIST_TARGET}_cmd APPEND
0088 COMMAND ${lrelease_cmd} ${file} -qm ${CREATE_QT_LINGUIST_DESTINATION}/${file_basename}.qm
0089 )
0090 list(APPEND abs_qm ${CREATE_QT_LINGUIST_DESTINATION}/${file_basename}.qm)
0091 endforeach()
0092 set(${CREATE_QT_LINGUIST_OUTPUT} ${abs_qm} PARENT_SCOPE)
0093 else()
0094 set(${CREATE_QT_LINGUIST_OUTPUT} PARENT_SCOPE)
0095 endif()
0096 endfunction()