Cristian Le 46b323d94b ConfigureBuildQt: Reconfigure standalone parts also
Change-Id: Iaa985d43206d365b7e9138925801fc0dbccbde2e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2025-06-07 13:20:12 +02:00

174 lines
5.1 KiB
CMake

# Copyright (C) 2025 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.16)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
list(APPEND CMAKE_MODULE_PATH "${EXTRA_MODULE_PATH}")
include(Common)
# The file is included separately from Common.cmake because it has side-effects
# that we want to apply only in the RunCMake part of the test.
include(RunCMake)
# Include the test specific utilities.
include(Utils)
macro(test_per_repo_prefix_qt)
add_test_case(
TEST_NAME "per_repo_prefix"
TEST_GROUPS per_repo prefix
TEST_ARGS
BUILD_STANDALONE_TESTS
BUILD_STANDALONE_EXAMPLES_IN_TREE
BUILD_STANDALONE_EXAMPLES_AS_EXTERNAL_PROJECTS
RECONFIGURE_WITHOUT_ARGS_IMMEDIATELY
RECONFIGURE_STANDALONE_PARTS
)
endmacro()
macro(test_per_repo_no_prefix_qt)
add_test_case(
TEST_NAME "per_repo_no_prefix"
TEST_GROUPS per_repo no_prefix
TEST_ARGS
NO_PREFIX
BUILD_STANDALONE_TESTS
BUILD_STANDALONE_EXAMPLES_IN_TREE
BUILD_STANDALONE_EXAMPLES_AS_EXTERNAL_PROJECTS
RECONFIGURE_WITHOUT_ARGS_AFTER_BUILD
BUILD_AFTER_RECONFIGURE
RECONFIGURE_STANDALONE_PARTS
)
endmacro()
macro(test_per_repo_prefix_in_tree_tests_and_examples_qt)
add_test_case(
TEST_NAME "per_repo_prefix_in_tree_tests_and_examples"
TEST_GROUPS per_repo prefix in_tree_tests_and_examples
TEST_ARGS
BUILD_IN_TREE_TESTS
BUILD_IN_TREE_EXAMPLES
)
endmacro()
macro(test_per_repo_no_prefix_in_tree_tests_and_examples_qt)
add_test_case(
TEST_NAME "per_repo_no_prefix_in_tree_tests_and_examples"
TEST_GROUPS per_repo no_prefix in_tree_tests_and_examples
TEST_ARGS
NO_PREFIX
BUILD_IN_TREE_TESTS
BUILD_IN_TREE_EXAMPLES
)
endmacro()
macro(test_per_repo_no_prefix_in_source)
add_test_case(
TEST_NAME "per_repo_no_prefix_in_source"
TEST_GROUPS per_repo no_prefix in_source
TEST_ARGS
NO_PREFIX
IN_SOURCE
)
endmacro()
macro(test_top_level_prefix_qt)
add_test_case(
TEST_NAME "top_level_prefix"
TEST_GROUPS top_level prefix
TEST_ARGS
TOP_LEVEL
BUILD_STANDALONE_TESTS
BUILD_STANDALONE_EXAMPLES_IN_TREE
BUILD_STANDALONE_EXAMPLES_AS_EXTERNAL_PROJECTS
)
endmacro()
macro(test_top_level_no_prefix_qt)
add_test_case(
TEST_NAME "top_level_no_prefix"
TEST_GROUPS top_level no_prefix
TEST_ARGS
TOP_LEVEL
NO_PREFIX
BUILD_STANDALONE_TESTS
BUILD_STANDALONE_EXAMPLES_IN_TREE
BUILD_STANDALONE_EXAMPLES_AS_EXTERNAL_PROJECTS
)
endmacro()
macro(test_top_level_no_prefix_in_source)
add_test_case(
TEST_NAME "top_level_no_prefix_in_source"
TEST_GROUPS top_level no_prefix in_source
TEST_ARGS
TOP_LEVEL
NO_PREFIX
IN_SOURCE
)
endmacro()
macro(test_top_level_prefix_in_tree_tests_and_examples_qt)
add_test_case(
TEST_NAME "top_level_prefix_in_tree_tests_and_examples"
TEST_GROUPS top_level prefix in_tree_tests_and_examples
TEST_ARGS
TOP_LEVEL
BUILD_IN_TREE_TESTS
BUILD_IN_TREE_EXAMPLES
)
endmacro()
macro(test_top_level_no_prefix_in_tree_tests_and_examples_qt)
add_test_case(
TEST_NAME "top_level_no_prefix_in_tree_tests_and_examples"
TEST_GROUPS top_level no_prefix in_tree_tests_and_examples
TEST_ARGS
TOP_LEVEL
NO_PREFIX
BUILD_IN_TREE_TESTS
BUILD_IN_TREE_EXAMPLES
)
endmacro()
# Collect all test cases and groups.
macro(collect_tests)
set(TEST_CASES "")
set(TEST_GROUPS "")
test_per_repo_no_prefix_qt()
test_top_level_no_prefix_qt()
# This usually tested in regular CI as well.
test_per_repo_prefix_qt()
test_top_level_prefix_qt()
# TODO: These don't work atm due to some failed include(Targets) files.
#test_per_repo_no_prefix_in_tree_tests_and_examples_qt()
#test_top_level_no_prefix_in_tree_tests_and_examples_qt()
#test_per_repo_prefix_in_tree_tests_and_examples_qt()
#test_top_level_prefix_in_tree_tests_and_examples_qt()
test_per_repo_no_prefix_in_source()
test_top_level_no_prefix_in_source()
# TODO: Cross-builds.
# TODO: qt5.git builds with all submodules. Current limitation is that the sync-to
# script can't handle multiple modules at once, nor an "all repos" case.
# so we might have to call init-repository in that case.
# TODO: Unix Makefile builds.
# TODO: Build examples and tests, not only configure them.
# TODO: Perhaps run some of the cmake auto tests in configs that are not tested in CI
# like no-prefix builds.
message(STATUS "Available test cases: ${TEST_CASES}")
message(STATUS "Available test groups: ${TEST_GROUPS}")
foreach(group IN LISTS TEST_GROUPS)
message(STATUS "Available test cases for group ${group}: ${TEST_GROUPS_${group}}")
endforeach()
endmacro()
run_tests()