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()