diff options
Diffstat (limited to 'tests/auto/cmake/test_static_resources')
9 files changed, 131 insertions, 167 deletions
diff --git a/tests/auto/cmake/test_static_resources/.cmake.conf b/tests/auto/cmake/test_static_resources/.cmake.conf index 4e73b3d607..10bc1fd407 100644 --- a/tests/auto/cmake/test_static_resources/.cmake.conf +++ b/tests/auto/cmake/test_static_resources/.cmake.conf @@ -1 +1 @@ -set(QT_REPO_MODULE_VERSION "6.2.0") +set(QT_REPO_MODULE_VERSION "6.8.0") diff --git a/tests/auto/cmake/test_static_resources/CMakeLists.txt b/tests/auto/cmake/test_static_resources/CMakeLists.txt index 840a49e614..e3cab9cf4a 100644 --- a/tests/auto/cmake/test_static_resources/CMakeLists.txt +++ b/tests/auto/cmake/test_static_resources/CMakeLists.txt @@ -1,4 +1,7 @@ -cmake_minimum_required(VERSION 3.15.0) +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +cmake_minimum_required(VERSION 3.16) include(.cmake.conf) @@ -10,6 +13,7 @@ project(TestStaticResources ) find_package(Qt6 COMPONENTS Core BuildInternals Test CONFIG REQUIRED) +qt_internal_project_setup() qt_build_repo_begin() @@ -18,4 +22,5 @@ add_subdirectory(mock_static_resources1) add_subdirectory(test_init_resources_static_plugin) add_subdirectory(test_static_resources_propagation) +qt_build_repo_post_process() qt_build_repo_end() diff --git a/tests/auto/cmake/test_static_resources/mock_static_resources1/CMakeLists.txt b/tests/auto/cmake/test_static_resources/mock_static_resources1/CMakeLists.txt index 973f8b3279..f866f0af46 100644 --- a/tests/auto/cmake/test_static_resources/mock_static_resources1/CMakeLists.txt +++ b/tests/auto/cmake/test_static_resources/mock_static_resources1/CMakeLists.txt @@ -1,4 +1,8 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + qt_internal_add_module(MockStaticResources1 + NO_UNITY_BUILD STATIC PLUGIN_TYPES mockstaticresources SOURCES diff --git a/tests/auto/cmake/test_static_resources/mock_static_resources1/dummy.cpp b/tests/auto/cmake/test_static_resources/mock_static_resources1/dummy.cpp index 47a48945a2..b6c23a82eb 100644 --- a/tests/auto/cmake/test_static_resources/mock_static_resources1/dummy.cpp +++ b/tests/auto/cmake/test_static_resources/mock_static_resources1/dummy.cpp @@ -1,29 +1,4 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only void dummy() { } diff --git a/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/CMakeLists.txt b/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/CMakeLists.txt index 07ce26e052..dec5588a6d 100644 --- a/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/CMakeLists.txt +++ b/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/CMakeLists.txt @@ -1,7 +1,11 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + qt_internal_add_plugin(TestInitResourcesStaticPlugin STATIC + NO_UNITY_BUILD OUTPUT_NAME testinitresourcesstaticplugin - TYPE mockstaticresources + PLUGIN_TYPE mockstaticresources SOURCES pluginmain.cpp SKIP_INSTALL diff --git a/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/pluginmain.cpp b/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/pluginmain.cpp index 992c948e55..a95e54ee4f 100644 --- a/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/pluginmain.cpp +++ b/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/pluginmain.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtCore/qfile.h> #include <QtCore/qdebug.h> diff --git a/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/test_init_resources_static_plugin.cpp b/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/test_init_resources_static_plugin.cpp index 73452258e4..2067b8c920 100644 --- a/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/test_init_resources_static_plugin.cpp +++ b/tests/auto/cmake/test_static_resources/test_init_resources_static_plugin/test_init_resources_static_plugin.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtTest/QtTest> #include <QtCore/qfile.h> diff --git a/tests/auto/cmake/test_static_resources/test_static_resources_propagation/CMakeLists.txt b/tests/auto/cmake/test_static_resources/test_static_resources_propagation/CMakeLists.txt index f8f46e14f4..b802323cfc 100644 --- a/tests/auto/cmake/test_static_resources/test_static_resources_propagation/CMakeLists.txt +++ b/tests/auto/cmake/test_static_resources/test_static_resources_propagation/CMakeLists.txt @@ -1,15 +1,26 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +# TODO: Revisit which of these tests makes sense to keep now that we depend on CMake 3.21 to +# properly place object libraries object files on the link line. +# See QTBUG-95601 +# +# +# +# # Add a dummy library that links the static "Qt" module containing resources file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp" CONTENT "void dummy() { }") add_library(dummy STATIC "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp") +set_target_properties(dummy PROPERTIES UNITY_BUILD OFF) target_link_libraries(dummy PRIVATE MockStaticResources1) - # Add the executable using qt_add_executable that needs to initialize the propagated resources. # Finalize it implicitly(since CMake version 3.19). if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.19) qt_add_executable(test_static_resources_propagation main.cpp) set_target_properties(test_static_resources_propagation PROPERTIES AUTOMOC TRUE + UNITY_BUILD OFF ) target_link_libraries(test_static_resources_propagation PRIVATE @@ -28,6 +39,7 @@ endif() qt_add_executable(test_static_resources_propagation_manual_finalize main.cpp MANUAL_FINALIZATION) set_target_properties(test_static_resources_propagation_manual_finalize PROPERTIES AUTOMOC TRUE + UNITY_BUILD OFF ) target_link_libraries(test_static_resources_propagation_manual_finalize PRIVATE @@ -35,17 +47,17 @@ target_link_libraries(test_static_resources_propagation_manual_finalize Qt::Core Qt::Test ) +qt_finalize_target(test_static_resources_propagation_manual_finalize) add_test(NAME test_static_resources_propagation_manual_finalize COMMAND test_static_resources_propagation_manual_finalize ) -qt_finalize_target(test_static_resources_propagation_manual_finalize) - # Add the executable using add_executable that needs to initialize the propagated resources. # Finalize it explicitly. add_executable(test_static_resources_propagation_non_qt main.cpp) set_target_properties(test_static_resources_propagation_non_qt PROPERTIES AUTOMOC TRUE + UNITY_BUILD OFF ) target_link_libraries(test_static_resources_propagation_non_qt PRIVATE @@ -58,12 +70,17 @@ add_test(NAME test_static_resources_propagation_non_qt COMMAND test_static_resources_propagation_non_qt ) -get_property(link_order_matters GLOBAL PROPERTY QT_LINK_ORDER_MATTERS) +get_target_property(link_order_matters + ${QT_CMAKE_EXPORT_NAMESPACE}::Platform + _qt_link_order_matters +) + if(NOT link_order_matters) - ## Add the executable using add_executable, expecting resources to be linked regardless of order. + # Add the executable using add_executable, expecting resources to be linked regardless of order. add_executable(test_static_resources_propagation_non_ld main.cpp) set_target_properties(test_static_resources_propagation_non_ld PROPERTIES AUTOMOC TRUE + UNITY_BUILD OFF ) target_link_libraries(test_static_resources_propagation_non_ld PRIVATE @@ -75,22 +92,89 @@ if(NOT link_order_matters) COMMAND test_static_resources_propagation_non_ld ) - if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.19) - qt_add_executable(test_static_resources_propagation_not_finalize main.cpp) - qt6_enable_resource_objects_finalizer_mode( - test_static_resources_propagation_not_finalize FALSE - ) - set_target_properties(test_static_resources_propagation_not_finalize PROPERTIES - AUTOMOC TRUE - ) - target_link_libraries(test_static_resources_propagation_not_finalize - PRIVATE - dummy - Qt::Core - Qt::Test - ) - add_test(NAME test_static_resources_propagation_not_finalize - COMMAND test_static_resources_propagation_not_finalize - ) - endif() +# FIXME: qt6_enable_object_libraries_finalizer_mode is not available anymore. See QTBUG-95601 +# +# if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.19) +# qt_add_executable(test_static_resources_propagation_not_finalize main.cpp) +# qt6_enable_object_libraries_finalizer_mode( +# test_static_resources_propagation_not_finalize FALSE +# ) +# set_target_properties(test_static_resources_propagation_not_finalize PROPERTIES +# AUTOMOC TRUE +# ) +# target_link_libraries(test_static_resources_propagation_not_finalize +# PRIVATE +# dummy +# Qt::Core +# Qt::Test +# ) +# add_test(NAME test_static_resources_propagation_not_finalize +# COMMAND test_static_resources_propagation_not_finalize +# ) +# endif() +endif() + +# Add the executable using add_executable, expecting resources are propagated using +# target_link_options approach. The test is not applicable for qt_add_executable call since +# we use the CMP0099 policy NEW unless the actual version of CMake is lower than 3.17, that means +# target_link_options will always be preferable to finalizers. +if(POLICY CMP0099) + cmake_policy(PUSH) + + cmake_policy(SET CMP0099 OLD) + # When CMP0099 is set to OLD target_link_options doesn't propagate the linker options when + # linking static libraries with a PRIVATE visibility but we finalize it explicitly. This + # is a pure finalizer use case for platforms where link order matters. + add_executable(test_static_resources_propagation_cmp0099_old_finalize main.cpp) + set_target_properties(test_static_resources_propagation_cmp0099_old_finalize PROPERTIES + AUTOMOC TRUE + UNITY_BUILD OFF + ) + target_link_libraries(test_static_resources_propagation_cmp0099_old_finalize + PRIVATE + dummy + Qt::Core + Qt::Test + ) + qt_finalize_target(test_static_resources_propagation_cmp0099_old_finalize) + add_test(NAME test_static_resources_propagation_cmp0099_old_finalize + COMMAND test_static_resources_propagation_cmp0099_old_finalize + ) + + # When CMP0099 is set to NEW target_link_options propagates the linker options when linking + # static libraries with a PRIVATE visibility. This is a pure target_link_options use case for + # platforms where link order matters. + cmake_policy(SET CMP0099 NEW) + add_executable(test_static_resources_propagation_cmp0099_new main.cpp) + set_target_properties(test_static_resources_propagation_cmp0099_new PROPERTIES + AUTOMOC TRUE + UNITY_BUILD OFF + ) + target_link_libraries(test_static_resources_propagation_cmp0099_new + PRIVATE + dummy + Qt::Core + Qt::Test + ) + add_test(NAME test_static_resources_propagation_cmp0099_new + COMMAND test_static_resources_propagation_cmp0099_new + ) + + # Check if linking libraries using genex propagates resource objects when CMP0099 is enabled + add_executable(test_static_resources_propagation_cmp0099_new_genex main.cpp) + set_target_properties(test_static_resources_propagation_cmp0099_new_genex PROPERTIES + AUTOMOC TRUE + UNITY_BUILD OFF + ) + target_link_libraries(test_static_resources_propagation_cmp0099_new_genex + PRIVATE + $<1:dummy> + Qt::Core + Qt::Test + ) + add_test(NAME test_static_resources_propagation_cmp0099_new_genex + COMMAND test_static_resources_propagation_cmp0099_new_genex + ) + + cmake_policy(POP) endif() diff --git a/tests/auto/cmake/test_static_resources/test_static_resources_propagation/main.cpp b/tests/auto/cmake/test_static_resources/test_static_resources_propagation/main.cpp index 4dee8eb0c7..c5d5312eb8 100644 --- a/tests/auto/cmake/test_static_resources/test_static_resources_propagation/main.cpp +++ b/tests/auto/cmake/test_static_resources/test_static_resources_propagation/main.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtTest/QtTest> #include <QtCore/qfile.h> |