summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@qt.io>2020-10-26 15:39:14 +0000
committerKai Koehne <kai.koehne@qt.io>2020-11-04 14:24:41 +0100
commit2648886e46bd2e71b71cdccf30cc4d858eea7841 (patch)
tree0fa09e27383e6af3ce607fbbe68ada0b0764208b
parente98fb8dd04c72988e25297d461fa9cf29233c1c2 (diff)
Partially revert "Remove old Qt 5 CMake build system files"
This reverts parts of commit 8d100101aa7e8635718d97c0621699e20e5c272e. We should not just get rid of the cmake macros, but instead make it ready for Qt 6... Task-number: TBUG-87870 Change-Id: I03331ce97ba60629f16977c88fe06a80172bdedd Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r--src/linguist/Qt5LinguistToolsMacros.cmake136
1 files changed, 136 insertions, 0 deletions
diff --git a/src/linguist/Qt5LinguistToolsMacros.cmake b/src/linguist/Qt5LinguistToolsMacros.cmake
new file mode 100644
index 000000000..ab271d56a
--- /dev/null
+++ b/src/linguist/Qt5LinguistToolsMacros.cmake
@@ -0,0 +1,136 @@
+#=============================================================================
+# Copyright 2005-2011 Kitware, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of Kitware, Inc. nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+include(CMakeParseArguments)
+
+function(QT5_CREATE_TRANSLATION _qm_files)
+ set(options)
+ set(oneValueArgs)
+ set(multiValueArgs OPTIONS)
+
+ cmake_parse_arguments(_LUPDATE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+ set(_lupdate_files ${_LUPDATE_UNPARSED_ARGUMENTS})
+ set(_lupdate_options ${_LUPDATE_OPTIONS})
+
+ set(_my_sources)
+ set(_my_tsfiles)
+ foreach(_file ${_lupdate_files})
+ get_filename_component(_ext ${_file} EXT)
+ get_filename_component(_abs_FILE ${_file} ABSOLUTE)
+ if(_ext MATCHES "ts")
+ list(APPEND _my_tsfiles ${_abs_FILE})
+ else()
+ list(APPEND _my_sources ${_abs_FILE})
+ endif()
+ endforeach()
+ foreach(_ts_file ${_my_tsfiles})
+ if(_my_sources)
+ # make a list file to call lupdate on, so we don't make our commands too
+ # long for some systems
+ get_filename_component(_ts_name ${_ts_file} NAME)
+ set(_ts_lst_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lst_file")
+ set(_lst_file_srcs)
+ foreach(_lst_file_src ${_my_sources})
+ set(_lst_file_srcs "${_lst_file_src}\n${_lst_file_srcs}")
+ endforeach()
+
+ get_directory_property(_inc_DIRS INCLUDE_DIRECTORIES)
+ foreach(_pro_include ${_inc_DIRS})
+ get_filename_component(_abs_include "${_pro_include}" ABSOLUTE)
+ set(_lst_file_srcs "-I${_pro_include}\n${_lst_file_srcs}")
+ endforeach()
+
+ file(WRITE ${_ts_lst_file} "${_lst_file_srcs}")
+ endif()
+ add_custom_command(OUTPUT ${_ts_file}
+ COMMAND ${Qt5_LUPDATE_EXECUTABLE}
+ ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
+ DEPENDS ${_my_sources}
+ BYPRODUCTS ${_ts_lst_file} VERBATIM)
+ endforeach()
+ qt5_add_translation(${_qm_files} ${_my_tsfiles})
+ set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
+endfunction()
+
+if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS)
+ function(qt_create_translation _qm_files)
+ if(QT_DEFAULT_MAJOR_VERSION EQUAL 5)
+ qt5_create_translation("${_qm_files}" ${ARGN})
+ elseif(QT_DEFAULT_MAJOR_VERSION EQUAL 6)
+ qt6_create_translation("${_qm_files}" ${ARGN})
+ endif()
+ set("${_qm_files}" "${${_qm_files}}" PARENT_SCOPE)
+ endfunction()
+endif()
+
+
+function(QT5_ADD_TRANSLATION _qm_files)
+ set(options)
+ set(oneValueArgs)
+ set(multiValueArgs OPTIONS)
+
+ cmake_parse_arguments(_LRELEASE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+ set(_lrelease_files ${_LRELEASE_UNPARSED_ARGUMENTS})
+
+ foreach(_current_FILE ${_lrelease_files})
+ get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE)
+ get_filename_component(qm ${_abs_FILE} NAME)
+ # everything before the last dot has to be considered the file name (including other dots)
+ string(REGEX REPLACE "\\.[^.]*$" "" FILE_NAME ${qm})
+ get_source_file_property(output_location ${_abs_FILE} OUTPUT_LOCATION)
+ if(output_location)
+ file(MAKE_DIRECTORY "${output_location}")
+ set(qm "${output_location}/${FILE_NAME}.qm")
+ else()
+ set(qm "${CMAKE_CURRENT_BINARY_DIR}/${FILE_NAME}.qm")
+ endif()
+
+ add_custom_command(OUTPUT ${qm}
+ COMMAND ${Qt5_LRELEASE_EXECUTABLE}
+ ARGS ${_LRELEASE_OPTIONS} ${_abs_FILE} -qm ${qm}
+ DEPENDS ${_abs_FILE} VERBATIM
+ )
+ list(APPEND ${_qm_files} ${qm})
+ endforeach()
+ set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
+endfunction()
+
+if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS)
+ function(qt_add_translation _qm_files)
+ if(QT_DEFAULT_MAJOR_VERSION EQUAL 5)
+ qt5_add_translation("${_qm_files}" ${ARGN})
+ elseif(QT_DEFAULT_MAJOR_VERSION EQUAL 6)
+ qt6_add_translation("${_qm_files}" ${ARGN})
+ endif()
+ set("${_qm_files}" "${${_qm_files}}" PARENT_SCOPE)
+ endfunction()
+endif()