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