summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
Diffstat (limited to 'Tests')
-rw-r--r--Tests/RunCMake/Autogen/AutoMocExecutableConfig.cmake13
-rw-r--r--Tests/RunCMake/Autogen/AutoRccExecutableConfig.cmake13
-rw-r--r--Tests/RunCMake/Autogen/AutoUicExecutableConfig.cmake13
-rw-r--r--Tests/RunCMake/Autogen/MocExample.cmake11
-rw-r--r--Tests/RunCMake/Autogen/RccExample.cmake11
-rw-r--r--Tests/RunCMake/Autogen/RunCMakeTest.cmake201
-rw-r--r--Tests/RunCMake/Autogen/UicExample.cmake11
-rw-r--r--Tests/RunCMake/CMakeLists.txt2
-rw-r--r--Tests/RunCMake/CXXModules/ExportBuildCxxModules-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/ExportInstallCxxModules-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/FileSetModulesInterface-stderr.txt8
-rw-r--r--Tests/RunCMake/CXXModules/FileSetModulesInterfaceImported-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/FileSetModulesPrivate-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/FileSetModulesPublic-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/InstallBMI-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/InstallBMIGenericArgs-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/InstallBMIIgnore-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-check.cmake15
-rw-r--r--Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/NinjaDependInfoExport-check.cmake15
-rw-r--r--Tests/RunCMake/CXXModules/NinjaDependInfoExport-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-check.cmake15
-rw-r--r--Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/NoCXX-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/NoCXX20-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/NoCXX20ModuleFlag-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/NotCXXSourceModules-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/NotCompiledSourceModules-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/RunCMakeTest.cmake8
-rw-r--r--Tests/RunCMake/CXXModules/check-json.cmake22
-rw-r--r--Tests/RunCMake/CXXModules/compiler_introspection.cmake2
-rw-r--r--Tests/RunCMake/CXXModules/examples/circular-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/deep-chain-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/duplicate-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-compile-commands-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-build-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-build/CMakeLists.txt63
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-build/forward.cxx6
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-build/importable.cxx18
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-build/include/include.h3
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-build/no_modules.cxx3
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-build/private.cxx6
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-build/subdir/importable.cxx6
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-build/test/CMakeLists.txt20
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-install-stderr.txt4
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-install/CMakeLists.txt69
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-install/forward.cxx6
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-install/importable.cxx18
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-install/include/include.h3
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-install/no_modules.cxx3
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-install/private.cxx6
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-install/subdir/importable.cxx6
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-include-directories-install/test/CMakeLists.txt18
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-usage-build-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/export-usage-install-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/generated-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-build-stderr.txt6
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-install-stderr.txt6
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules-export-include-directories-build-stderr.txt7
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules-export-include-directories-install-stderr.txt7
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules-export-interface-build-stderr.txt6
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules-export-interface-install-stderr.txt6
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-build-stderr.txt6
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-install-stderr.txt6
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules/CMakeLists.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/import-modules/use.cxx6
-rw-r--r--Tests/RunCMake/CXXModules/examples/install-bmi-and-interfaces-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/install-bmi-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/internal-partitions-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/library-shared-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/library-static-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/object-library-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/partitions-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/public-req-private-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/req-private-other-target-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/same-src-name-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/scan_properties-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/simple-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/try-compile-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/examples/try-run-stderr.txt2
-rw-r--r--Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-private.json13
-rw-r--r--Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-public.json15
-rw-r--r--Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-private.json13
-rw-r--r--Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-public.json13
-rw-r--r--Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-private.json13
-rw-r--r--Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-public.json13
-rw-r--r--Tests/RunCMake/CommandLine/RunCMakeTest.cmake2
-rw-r--r--Tests/RunCMake/CommandLine/help-arbitrary-stdout.txt7
-rw-r--r--Tests/RunCMake/GoogleTest/xcode_sign_adhoc.cmake14
-rw-r--r--Tests/RunCMake/ObjectLibrary/LinkObjLHSShared.cmake12
-rw-r--r--Tests/RunCMake/RunCMake.cmake2
-rw-r--r--Tests/RunCMake/XcFramework/RunCMakeTest.cmake52
-rw-r--r--Tests/RunCMake/XcodeProject-Device/RunCMakeTest.cmake46
94 files changed, 757 insertions, 248 deletions
diff --git a/Tests/RunCMake/Autogen/AutoMocExecutableConfig.cmake b/Tests/RunCMake/Autogen/AutoMocExecutableConfig.cmake
index fd3614c..3ee9be9 100644
--- a/Tests/RunCMake/Autogen/AutoMocExecutableConfig.cmake
+++ b/Tests/RunCMake/Autogen/AutoMocExecutableConfig.cmake
@@ -1,17 +1,9 @@
-enable_language(CXX)
-
-set(CMAKE_CXX_STANDARD 11)
-find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui)
+include(MocExample.cmake)
if(NOT TARGET Qt${with_qt_version}::moc)
message(FATAL_ERROR "Qt${with_qt_version}::moc not found")
endif()
-add_library(dummy STATIC example.cpp)
-target_link_libraries(dummy Qt${with_qt_version}::Core
- Qt${with_qt_version}::Widgets
- Qt${with_qt_version}::Gui)
-
get_target_property(moc_location Qt${with_qt_version}::moc IMPORTED_LOCATION)
set_target_properties(dummy PROPERTIES AUTOMOC_MOC_OPTIONS "EXE_PATH=${moc_location}")
@@ -20,5 +12,4 @@ add_executable(mymoc $<$<CONFIG:Debug>:exe_debug.cpp>
$<$<CONFIG:RelWithDebInfo>:exe_relwithdebinfo.cpp>
)
-set_target_properties(dummy PROPERTIES AUTOMOC_EXECUTABLE $<TARGET_FILE:mymoc>
- AUTOMOC ON)
+set_target_properties(dummy PROPERTIES AUTOMOC_EXECUTABLE $<TARGET_FILE:mymoc>)
diff --git a/Tests/RunCMake/Autogen/AutoRccExecutableConfig.cmake b/Tests/RunCMake/Autogen/AutoRccExecutableConfig.cmake
index a0e9ce9..0e46420 100644
--- a/Tests/RunCMake/Autogen/AutoRccExecutableConfig.cmake
+++ b/Tests/RunCMake/Autogen/AutoRccExecutableConfig.cmake
@@ -1,17 +1,9 @@
-enable_language(CXX)
-
-set(CMAKE_CXX_STANDARD 11)
-find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui)
+include(RccExample.cmake)
if(NOT TARGET Qt${with_qt_version}::rcc)
message(FATAL_ERROR "Qt${with_qt_version}::rcc not found")
endif()
-add_library(dummy STATIC example.cpp data.qrc)
-target_link_libraries(dummy Qt${with_qt_version}::Core
- Qt${with_qt_version}::Widgets
- Qt${with_qt_version}::Gui)
-
get_target_property(rcc_location Qt${with_qt_version}::rcc IMPORTED_LOCATION)
set_target_properties(dummy PROPERTIES AUTORCC_OPTIONS "EXE_PATH=${rcc_location}")
@@ -20,5 +12,4 @@ add_executable(myrcc $<$<CONFIG:Debug>:exe_debug.cpp>
$<$<CONFIG:RelWithDebInfo>:exe_relwithdebinfo.cpp>
)
-set_target_properties(dummy PROPERTIES AUTORCC_EXECUTABLE $<TARGET_FILE:myrcc>
- AUTORCC ON)
+set_target_properties(dummy PROPERTIES AUTORCC_EXECUTABLE $<TARGET_FILE:myrcc>)
diff --git a/Tests/RunCMake/Autogen/AutoUicExecutableConfig.cmake b/Tests/RunCMake/Autogen/AutoUicExecutableConfig.cmake
index ce7675e..55b88b8 100644
--- a/Tests/RunCMake/Autogen/AutoUicExecutableConfig.cmake
+++ b/Tests/RunCMake/Autogen/AutoUicExecutableConfig.cmake
@@ -1,17 +1,9 @@
-enable_language(CXX)
-
-set(CMAKE_CXX_STANDARD 11)
-find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui)
+include(UicExample.cmake)
if(NOT TARGET Qt${with_qt_version}::uic)
message(FATAL_ERROR "Qt${with_qt_version}::uic not found")
endif()
-add_library(dummy STATIC example_ui.cpp uiA.ui)
-target_link_libraries(dummy Qt${with_qt_version}::Core
- Qt${with_qt_version}::Widgets
- Qt${with_qt_version}::Gui)
-
get_target_property(uic_location Qt${with_qt_version}::uic IMPORTED_LOCATION)
set_target_properties(dummy PROPERTIES AUTOUIC_OPTIONS "EXE_PATH=${uic_location}")
@@ -20,5 +12,4 @@ add_executable(myuic $<$<CONFIG:Debug>:exe_debug.cpp>
$<$<CONFIG:RelWithDebInfo>:exe_relwithdebinfo.cpp>
)
-set_target_properties(dummy PROPERTIES AUTOUIC_EXECUTABLE $<TARGET_FILE:myuic>
- AUTOUIC ON)
+set_target_properties(dummy PROPERTIES AUTOUIC_EXECUTABLE $<TARGET_FILE:myuic>)
diff --git a/Tests/RunCMake/Autogen/MocExample.cmake b/Tests/RunCMake/Autogen/MocExample.cmake
new file mode 100644
index 0000000..f06f8f6
--- /dev/null
+++ b/Tests/RunCMake/Autogen/MocExample.cmake
@@ -0,0 +1,11 @@
+enable_language(CXX)
+
+set(CMAKE_CXX_STANDARD 11)
+find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui)
+
+add_library(dummy STATIC example.cpp)
+target_link_libraries(dummy Qt${with_qt_version}::Core
+ Qt${with_qt_version}::Widgets
+ Qt${with_qt_version}::Gui)
+
+set_target_properties(dummy PROPERTIES AUTOMOC ON)
diff --git a/Tests/RunCMake/Autogen/RccExample.cmake b/Tests/RunCMake/Autogen/RccExample.cmake
new file mode 100644
index 0000000..4554eb0
--- /dev/null
+++ b/Tests/RunCMake/Autogen/RccExample.cmake
@@ -0,0 +1,11 @@
+enable_language(CXX)
+
+set(CMAKE_CXX_STANDARD 11)
+find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui)
+
+add_library(dummy STATIC example.cpp data.qrc)
+target_link_libraries(dummy Qt${with_qt_version}::Core
+ Qt${with_qt_version}::Widgets
+ Qt${with_qt_version}::Gui)
+
+set_target_properties(dummy PROPERTIES AUTORCC ON)
diff --git a/Tests/RunCMake/Autogen/RunCMakeTest.cmake b/Tests/RunCMake/Autogen/RunCMakeTest.cmake
index 12a8f8e..38987b9 100644
--- a/Tests/RunCMake/Autogen/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Autogen/RunCMakeTest.cmake
@@ -126,50 +126,69 @@ if (DEFINED with_qt_version)
if(RunCMake_GENERATOR MATCHES "Make|Ninja")
block()
if(QtCore_VERSION VERSION_GREATER_EQUAL 5.15.0)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/QtAutoMocDeps-build)
- run_cmake(QtAutoMocDeps)
- set(RunCMake_TEST_NO_CLEAN 1)
- # Build the project.
- run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose)
- # Touch just the library source file, which shouldn't cause a rerun of AUTOMOC
- # for app_with_qt target.
- file(TOUCH "${RunCMake_SOURCE_DIR}/simple_lib.cpp")
- set(RunCMake_TEST_NOT_EXPECT_stdout "Automatic MOC for target app_with_qt|\
+ if (RunCMake_GENERATOR MATCHES "Ninja Multi-Config")
+ set(config_list Debug Release RelWithDebInfo)
+ else()
+ set(config_list single-config)
+ endif()
+ foreach(config IN ITEMS ${config_list})
+ block()
+ if (config STREQUAL "single-config")
+ set(config_suffix "")
+ else()
+ set(config_suffix "_${config}")
+ endif()
+ set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/QtAutoMocDeps${config_suffix}-build)
+ run_cmake(QtAutoMocDeps)
+ set(RunCMake_TEST_NO_CLEAN 1)
+ # Build the project.
+ if (config STREQUAL "single-config")
+ set(config_param "")
+ else()
+ set(config_param "--config ${config}")
+ endif()
+ run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose ${config_param})
+ # Touch just the library source file, which shouldn't cause a rerun of AUTOMOC
+ # for app_with_qt target.
+ file(TOUCH "${RunCMake_SOURCE_DIR}/simple_lib.cpp")
+ set(RunCMake_TEST_NOT_EXPECT_stdout "Automatic MOC for target app_with_qt|\
Automatic MOC for target sub_exe_1|\
Automatic MOC for target sub_exe_2")
- set(RunCMake_TEST_VARIANT_DESCRIPTION "-Don't execute AUTOMOC for 'app_with_qt', 'sub_exe_1' and 'sub_exe_2'")
- # Build and assert that AUTOMOC was not run for app_with_qt, sub_exe_1 and sub_exe_2.
- run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose)
- unset(RunCMake_TEST_VARIANT_DESCRIPTION)
- unset(RunCMake_TEST_NOT_EXPECT_stdout)
-
- macro(check_file_exists file)
- if (EXISTS "${file}")
- set(check_result "PASSED")
- set(message_type "STATUS")
- else()
- set(check_result "FAILED")
- set(message_type "FATAL_ERROR")
- endif()
-
- message(${message_type} "QtAutoMocDeps-build-\"${file}\" was generated - ${check_result}")
- endmacro()
-
- check_file_exists("${RunCMake_TEST_BINARY_DIR}/app_with_qt_autogen/deps")
- check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir1/sub_exe_1_autogen/deps")
- check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir2/sub_exe_2_autogen/deps")
-
- check_file_exists("${RunCMake_TEST_BINARY_DIR}/app_with_qt_autogen/timestamp")
- check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir1/sub_exe_1_autogen/timestamp")
- check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir2/sub_exe_2_autogen/timestamp")
-
- # Touch a header file to make sure an automoc dependency cycle is not introduced.
- file(TOUCH "${RunCMake_SOURCE_DIR}/MyWindow.h")
- set(RunCMake_TEST_VARIANT_DESCRIPTION "-First build after touch to detect dependency cycle")
- run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose)
- # Need to run a second time to hit the dependency cycle.
- set(RunCMake_TEST_VARIANT_DESCRIPTION "-Don't hit dependency cycle")
- run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose)
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-Don't execute AUTOMOC for 'app_with_qt', 'sub_exe_1' and 'sub_exe_2'")
+ # Build and assert that AUTOMOC was not run for app_with_qt, sub_exe_1 and sub_exe_2.
+ run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose ${config_param})
+ unset(RunCMake_TEST_VARIANT_DESCRIPTION)
+ unset(RunCMake_TEST_NOT_EXPECT_stdout)
+
+ macro(check_file_exists file)
+ if (EXISTS "${file}")
+ set(check_result "PASSED")
+ set(message_type "STATUS")
+ else()
+ set(check_result "FAILED")
+ set(message_type "FATAL_ERROR")
+ endif()
+
+ message(${message_type} "QtAutoMocDeps-build-\"${file}\" was generated - ${check_result}")
+ endmacro()
+
+ check_file_exists("${RunCMake_TEST_BINARY_DIR}/app_with_qt_autogen/deps${config_suffix}")
+ check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir1/sub_exe_1_autogen/deps${config_suffix}")
+ check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir2/sub_exe_2_autogen/deps${config_suffix}")
+
+ check_file_exists("${RunCMake_TEST_BINARY_DIR}/app_with_qt_autogen/timestamp${config_suffix}")
+ check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir1/sub_exe_1_autogen/timestamp${config_suffix}")
+ check_file_exists("${RunCMake_TEST_BINARY_DIR}/QtSubDir2/sub_exe_2_autogen/timestamp${config_suffix}")
+
+ # Touch a header file to make sure an automoc dependency cycle is not introduced.
+ file(TOUCH "${RunCMake_SOURCE_DIR}/MyWindow.h")
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-First build after touch to detect dependency cycle")
+ run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose)
+ # Need to run a second time to hit the dependency cycle.
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-Don't hit dependency cycle")
+ run_cmake_command(QtAutoMocDeps-build ${CMAKE_COMMAND} --build . --verbose)
+ endblock()
+ endforeach()
endif()
endblock()
endif()
@@ -239,6 +258,16 @@ ${make_program_stderr}
endif()
endfunction()
+ function(expect_n_times string_to_check expected_output expected_count test_name)
+ count_substring("${string_to_check}" "${expected_output}" count)
+ if(NOT count EQUAL ${expected_count})
+ message(STATUS "${test_name}-expect_${expected_count}_times - FAILED")
+ message(FATAL_ERROR "Expected to find ${expected_output} exactly ${expected_count} times in ${string_to_check} but found ${count} occurrences of ${expected_output}")
+ else()
+ message(STATUS "${test_name}-expect_${expected_count}_times - PASSED")
+ endif()
+ endfunction()
+
function(not_expect make_program_stdout unexpected_output test_name)
count_substring("${make_program_stdout}" "${unexpected_output}" count)
if(NOT count EQUAL 0)
@@ -253,6 +282,27 @@ ${make_program_stderr}
foreach(exe IN ITEMS Moc Uic Rcc)
if(RunCMake_GENERATOR MATCHES "Ninja Multi-Config")
block()
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMake-configure")
+ set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig-multi-config-build)
+ run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON)
+ unset(RunCMake_TEST_VARIANT_DESCRIPTION)
+ set(RunCMake_TEST_NO_CLEAN 1)
+ foreach(config IN ITEMS Debug Release RelWithDebInfo)
+ block()
+ set(RunCMake_TEST_EXPECT_stdout ".*running_exe_${config}*")
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}-expect_running_exe_${config}")
+ run_cmake_command(Auto${exe}ExecutableConfig-multi-config-build ${CMAKE_COMMAND} --build . --config ${config})
+ endblock()
+ endforeach()
+ set(RunCMake_TEST_EXPECT_stdout "ninja: no work to do")
+ foreach(config IN ITEMS Debug Release RelWithDebInfo)
+ block()
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}-expect_no_work_to_do")
+ run_cmake_command(Auto${exe}ExecutableConfig-multi-config-build ${CMAKE_COMMAND} --build . --config ${config})
+ endblock()
+ endforeach()
+ endblock()
+ block()
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Auto${exe}ExecutableConfig-build)
run_cmake_with_options(Auto${exe}ExecutableConfig ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON)
foreach(config IN ITEMS Debug Release RelWithDebInfo)
@@ -337,4 +387,71 @@ ${make_program_stderr}
endif()
endforeach()
endif()
+
+ # Visual Studio specific dependency tests
+ if (RunCMake_GENERATOR MATCHES "Visual Studio")
+ foreach(exe IN ITEMS Moc Uic Rcc)
+ block()
+ set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${exe}Example-build)
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMake-configure")
+ run_cmake_with_options(${exe}Example ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON)
+ unset(RunCMake_TEST_VARIANT_DESCRIPTION)
+ set(RunCMake_TEST_NO_CLEAN 1)
+ foreach(config IN ITEMS Debug Release RelWithDebInfo)
+ block()
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-${config}-first-build")
+ run_cmake_command(${exe}Example-build ${CMAKE_COMMAND} --build . --config ${config})
+ endblock()
+ endforeach()
+ foreach(config IN ITEMS Debug Release RelWithDebInfo)
+ block()
+ if (exe STREQUAL "Moc" OR exe STREQUAL "Uic")
+ set(RunCMake_TEST_NOT_EXPECT_stdout "Auto${exe}")
+ set(not_expect_descripton "Auto${exe}")
+ else ()
+ set(RunCMake_TEST_NOT_EXPECT_stdout "qrc_data.cpp|Auto${exe}")
+ set(not_expect_descripton "qrc_data.cpp_and_Auto${exe}")
+ endif()
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-second-build-${config}_expect_no_${not_expect_descripton}")
+ run_cmake_command(${exe}Example-build ${CMAKE_COMMAND} --build . --config ${config})
+ endblock()
+ endforeach()
+ endblock()
+ endforeach()
+ endif()
+
+ if (RunCMake_GENERATOR MATCHES "Xcode")
+ foreach(exe IN ITEMS Moc Uic Rcc)
+ block()
+ set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${exe}Example-build)
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMake-configure")
+ set(RunCMake_TEST_EXPECT_stderr ".*")
+ run_cmake_with_options(${exe}Example ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTOGEN_VERBOSE=ON)
+ set(RunCMake_TEST_NO_CLEAN 1)
+ set(RunCMake_MAKE_PROGRAM ${CMAKE_COMMAND})
+ run_make_program(${RunCMake_TEST_BINARY_DIR} --build . --config Debug)
+ if (exe STREQUAL "Moc")
+ set(expected_count 16)
+ elseif (exe STREQUAL "Uic")
+ set(expected_count 4)
+ else()
+ set(expected_count 12)
+ endif()
+ expect_n_times("${make_program_stdout}" "Auto${exe}:" ${expected_count} "${exe}Example-build-Auto${exe}")
+ expect_n_times("${make_program_stdout}" "Auto${exe}:" ${expected_count} "${exe}Example-build-Auto${exe}")
+
+ if (exe STREQUAL "Moc" OR exe STREQUAL "Uic")
+ expect_n_times("${make_program_stdout}" "AutoGen:" 20 "${exe}Example-build-AutoGen:")
+ endif()
+
+ foreach(config IN ITEMS Debug Release RelWithDebInfo)
+ block()
+ run_make_program(${RunCMake_TEST_BINARY_DIR} --build . --config ${config})
+ not_expect("${make_program_stdout}" "Auto${exe}" "${exe}Example-${config}_Auto${exe}")
+ not_expect("${make_program_stdout}" "AutoGen:" "${exe}Example-${config}_AutoGen")
+ endblock()
+ endforeach()
+ endblock()
+ endforeach()
+ endif()
endif ()
diff --git a/Tests/RunCMake/Autogen/UicExample.cmake b/Tests/RunCMake/Autogen/UicExample.cmake
new file mode 100644
index 0000000..4b1f8c1
--- /dev/null
+++ b/Tests/RunCMake/Autogen/UicExample.cmake
@@ -0,0 +1,11 @@
+enable_language(CXX)
+
+set(CMAKE_CXX_STANDARD 11)
+find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets Gui)
+
+add_library(dummy STATIC example_ui.cpp uiA.ui)
+target_link_libraries(dummy Qt${with_qt_version}::Core
+ Qt${with_qt_version}::Widgets
+ Qt${with_qt_version}::Gui)
+
+set_target_properties(dummy PROPERTIES AUTOUIC ON)
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 14b94c7..4387c5b 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -722,7 +722,7 @@ if((CMAKE_C_COMPILER_ID STREQUAL "AppleClang"
set(CMake_TEST_XcFramework ON)
endif()
if(CMake_TEST_XcFramework AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 11.0)
- set(XcFramework_ARGS -DCMAKE_C_COMPILER_VERSION=${CMAKE_C_COMPILER_VERSION})
+ set(XcFramework_ARGS -DCMake_TEST_XCODE_VERSION=${CMake_TEST_XCODE_VERSION})
add_RunCMake_test(XcFramework)
# This test can take a very long time due to lots of combinations.
diff --git a/Tests/RunCMake/CXXModules/ExportBuildCxxModules-stderr.txt b/Tests/RunCMake/CXXModules/ExportBuildCxxModules-stderr.txt
index a82791b..49e869a 100644
--- a/Tests/RunCMake/CXXModules/ExportBuildCxxModules-stderr.txt
+++ b/Tests/RunCMake/CXXModules/ExportBuildCxxModules-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at ExportBuildCxxModules.cmake:5 \(target_sources\):
+CMake Warning \(dev\) at ExportBuildCxxModules.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/ExportInstallCxxModules-stderr.txt b/Tests/RunCMake/CXXModules/ExportInstallCxxModules-stderr.txt
index db02227..4a6969d 100644
--- a/Tests/RunCMake/CXXModules/ExportInstallCxxModules-stderr.txt
+++ b/Tests/RunCMake/CXXModules/ExportInstallCxxModules-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at ExportInstallCxxModules.cmake:5 \(target_sources\):
+CMake Warning \(dev\) at ExportInstallCxxModules.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/FileSetModulesInterface-stderr.txt b/Tests/RunCMake/CXXModules/FileSetModulesInterface-stderr.txt
index dfcdbec..cb21e2c 100644
--- a/Tests/RunCMake/CXXModules/FileSetModulesInterface-stderr.txt
+++ b/Tests/RunCMake/CXXModules/FileSetModulesInterface-stderr.txt
@@ -1,12 +1,12 @@
-CMake Warning \(dev\) at FileSetModulesInterface.cmake:2 \(target_sources\):
+CMake Warning \(dev\) at FileSetModulesInterface.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
-CMake Error at FileSetModulesInterface.cmake:2 \(target_sources\):
+CMake Error at FileSetModulesInterface.cmake:[0-9]+ \(target_sources\):
target_sources File set TYPE "CXX_MODULES" may not have "INTERFACE"
visibility
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
diff --git a/Tests/RunCMake/CXXModules/FileSetModulesInterfaceImported-stderr.txt b/Tests/RunCMake/CXXModules/FileSetModulesInterfaceImported-stderr.txt
index 4420bbc..aae763b 100644
--- a/Tests/RunCMake/CXXModules/FileSetModulesInterfaceImported-stderr.txt
+++ b/Tests/RunCMake/CXXModules/FileSetModulesInterfaceImported-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at FileSetModulesInterfaceImported.cmake:2 \(target_sources\):
+CMake Warning \(dev\) at FileSetModulesInterfaceImported.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/FileSetModulesPrivate-stderr.txt b/Tests/RunCMake/CXXModules/FileSetModulesPrivate-stderr.txt
index 0c82ccc..a6e778a 100644
--- a/Tests/RunCMake/CXXModules/FileSetModulesPrivate-stderr.txt
+++ b/Tests/RunCMake/CXXModules/FileSetModulesPrivate-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at FileSetModulesPrivate.cmake:5 \(target_sources\):
+CMake Warning \(dev\) at FileSetModulesPrivate.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/FileSetModulesPublic-stderr.txt b/Tests/RunCMake/CXXModules/FileSetModulesPublic-stderr.txt
index a27a28e..7fa8aa4 100644
--- a/Tests/RunCMake/CXXModules/FileSetModulesPublic-stderr.txt
+++ b/Tests/RunCMake/CXXModules/FileSetModulesPublic-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at FileSetModulesPublic.cmake:5 \(target_sources\):
+CMake Warning \(dev\) at FileSetModulesPublic.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/InstallBMI-stderr.txt b/Tests/RunCMake/CXXModules/InstallBMI-stderr.txt
index fc3c7db..0f50963 100644
--- a/Tests/RunCMake/CXXModules/InstallBMI-stderr.txt
+++ b/Tests/RunCMake/CXXModules/InstallBMI-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at InstallBMI.cmake:8 \(install\):
+CMake Warning \(dev\) at InstallBMI.cmake:[0-9]+ \(install\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/InstallBMIGenericArgs-stderr.txt b/Tests/RunCMake/CXXModules/InstallBMIGenericArgs-stderr.txt
index 44c961f..52b9c35 100644
--- a/Tests/RunCMake/CXXModules/InstallBMIGenericArgs-stderr.txt
+++ b/Tests/RunCMake/CXXModules/InstallBMIGenericArgs-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at InstallBMIGenericArgs.cmake:8 \(install\):
+CMake Warning \(dev\) at InstallBMIGenericArgs.cmake:[0-9]+ \(install\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/InstallBMIIgnore-stderr.txt b/Tests/RunCMake/CXXModules/InstallBMIIgnore-stderr.txt
index d9d2c2d..bfff34c 100644
--- a/Tests/RunCMake/CXXModules/InstallBMIIgnore-stderr.txt
+++ b/Tests/RunCMake/CXXModules/InstallBMIIgnore-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at InstallBMIIgnore.cmake:5 \(install\):
+CMake Warning \(dev\) at InstallBMIIgnore.cmake:[0-9]+ \(install\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-check.cmake b/Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-check.cmake
index 0d08c44..6de2e1e 100644
--- a/Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-check.cmake
+++ b/Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-check.cmake
@@ -2,19 +2,19 @@ include("${CMAKE_CURRENT_LIST_DIR}/check-json.cmake")
if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
set(have_file 0)
- foreach (config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
- if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/${config}/CXXDependInfo.json")
+ foreach (CXXModules_config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
+ if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/${CXXModules_config}/CXXDependInfo.json")
continue ()
endif ()
set(have_file 1)
- set(CMAKE_BUILD_TYPE "${config}")
+ set(CMAKE_BUILD_TYPE "${CXXModules_config}")
- file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/${config}/CXXDependInfo.json" actual_contents)
+ file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoBMIInstall-public.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
- file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-private.dir/${config}/CXXDependInfo.json" actual_contents)
+ file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-private.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoBMIInstall-private.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
endforeach ()
@@ -24,6 +24,9 @@ if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
"No recognized build configurations found.")
endif ()
else ()
+ set(CXXModules_config "${CXXModules_default_build_type}")
+ set(CMAKE_BUILD_TYPE "${CXXModules_default_build_type}")
+
file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/CXXDependInfo.json" actual_contents)
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoBMIInstall-public.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
@@ -32,3 +35,5 @@ else ()
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoBMIInstall-private.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
endif ()
+
+string(REPLACE ";" "\n " RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}")
diff --git a/Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-stderr.txt b/Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-stderr.txt
index 9a7c1f9..e5bd1ec 100644
--- a/Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at NinjaDependInfoBMIInstall.cmake:13 \(target_sources\):
+CMake Warning \(dev\) at NinjaDependInfoBMIInstall.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/NinjaDependInfoExport-check.cmake b/Tests/RunCMake/CXXModules/NinjaDependInfoExport-check.cmake
index 7720257..0c933c9 100644
--- a/Tests/RunCMake/CXXModules/NinjaDependInfoExport-check.cmake
+++ b/Tests/RunCMake/CXXModules/NinjaDependInfoExport-check.cmake
@@ -2,19 +2,19 @@ include("${CMAKE_CURRENT_LIST_DIR}/check-json.cmake")
if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
set(have_file 0)
- foreach (config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
- if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/${config}/CXXDependInfo.json")
+ foreach (CXXModules_config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
+ if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/${CXXModules_config}/CXXDependInfo.json")
continue ()
endif ()
set(have_file 1)
- set(CMAKE_BUILD_TYPE "${config}")
+ set(CMAKE_BUILD_TYPE "${CXXModules_config}")
- file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/${config}/CXXDependInfo.json" actual_contents)
+ file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoExport-public.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
- file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-private.dir/${config}/CXXDependInfo.json" actual_contents)
+ file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-private.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoExport-private.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
endforeach ()
@@ -24,6 +24,9 @@ if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
"No recognized build configurations found.")
endif ()
else ()
+ set(CXXModules_config "${CXXModules_default_build_type}")
+ set(CMAKE_BUILD_TYPE "${CXXModules_default_build_type}")
+
file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/CXXDependInfo.json" actual_contents)
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoExport-public.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
@@ -32,3 +35,5 @@ else ()
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoExport-private.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
endif ()
+
+string(REPLACE ";" "\n " RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}")
diff --git a/Tests/RunCMake/CXXModules/NinjaDependInfoExport-stderr.txt b/Tests/RunCMake/CXXModules/NinjaDependInfoExport-stderr.txt
index b66005b..ce0e55a 100644
--- a/Tests/RunCMake/CXXModules/NinjaDependInfoExport-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NinjaDependInfoExport-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at NinjaDependInfoExport.cmake:13 \(target_sources\):
+CMake Warning \(dev\) at NinjaDependInfoExport.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-check.cmake b/Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-check.cmake
index b9a1315..4eaa891 100644
--- a/Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-check.cmake
+++ b/Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-check.cmake
@@ -2,19 +2,19 @@ include("${CMAKE_CURRENT_LIST_DIR}/check-json.cmake")
if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
set(have_file 0)
- foreach (config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
- if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/${config}/CXXDependInfo.json")
+ foreach (CXXModules_config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
+ if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/${CXXModules_config}/CXXDependInfo.json")
continue ()
endif ()
set(have_file 1)
- set(CMAKE_BUILD_TYPE "${config}")
+ set(CMAKE_BUILD_TYPE "${CXXModules_config}")
- file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/${config}/CXXDependInfo.json" actual_contents)
+ file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoFileSet-public.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
- file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-private.dir/${config}/CXXDependInfo.json" actual_contents)
+ file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-private.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoFileSet-private.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
endforeach ()
@@ -24,6 +24,9 @@ if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
"No recognized build configurations found.")
endif ()
else ()
+ set(CXXModules_config "${CXXModules_default_build_type}")
+ set(CMAKE_BUILD_TYPE "${CXXModules_default_build_type}")
+
file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/CXXDependInfo.json" actual_contents)
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoFileSet-public.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
@@ -32,3 +35,5 @@ else ()
file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoFileSet-private.json" expect_contents)
check_json("${actual_contents}" "${expect_contents}")
endif ()
+
+string(REPLACE ";" "\n " RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}")
diff --git a/Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-stderr.txt b/Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-stderr.txt
index 949b7af..055e741 100644
--- a/Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-stderr.txt
@@ -1,6 +1,6 @@
-CMake Warning \(dev\) at NinjaDependInfoFileSet.cmake:13 \(target_sources\):
+CMake Warning \(dev\) at NinjaDependInfoFileSet.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/NoCXX-stderr.txt b/Tests/RunCMake/CXXModules/NoCXX-stderr.txt
index 148fa2d..c261e8c 100644
--- a/Tests/RunCMake/CXXModules/NoCXX-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NoCXX-stderr.txt
@@ -1,8 +1,8 @@
-CMake Warning \(dev\) at NoCXX.cmake:4 \(target_sources\):
+CMake Warning \(dev\) at NoCXX.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Error in CMakeLists.txt:
diff --git a/Tests/RunCMake/CXXModules/NoCXX20-stderr.txt b/Tests/RunCMake/CXXModules/NoCXX20-stderr.txt
index dd25689..aba0c89 100644
--- a/Tests/RunCMake/CXXModules/NoCXX20-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NoCXX20-stderr.txt
@@ -1,8 +1,8 @@
-CMake Warning \(dev\) at NoCXX20.cmake:4 \(target_sources\):
+CMake Warning \(dev\) at NoCXX20.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Error in CMakeLists.txt:
diff --git a/Tests/RunCMake/CXXModules/NoCXX20ModuleFlag-stderr.txt b/Tests/RunCMake/CXXModules/NoCXX20ModuleFlag-stderr.txt
index c2dc0b6..06174b5 100644
--- a/Tests/RunCMake/CXXModules/NoCXX20ModuleFlag-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NoCXX20ModuleFlag-stderr.txt
@@ -1,8 +1,8 @@
-CMake Warning \(dev\) at NoCXX20ModuleFlag.cmake:6 \(target_sources\):
+CMake Warning \(dev\) at NoCXX20ModuleFlag.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Error in CMakeLists.txt:
diff --git a/Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt b/Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt
index c82a35a..8d15c19 100644
--- a/Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt
@@ -1,8 +1,8 @@
-CMake Warning \(dev\) at NoDyndepSupport.cmake:9 \(target_sources\):
+CMake Warning \(dev\) at NoDyndepSupport.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
(CMake Error:
diff --git a/Tests/RunCMake/CXXModules/NotCXXSourceModules-stderr.txt b/Tests/RunCMake/CXXModules/NotCXXSourceModules-stderr.txt
index 78d3dc6..d73ff98 100644
--- a/Tests/RunCMake/CXXModules/NotCXXSourceModules-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NotCXXSourceModules-stderr.txt
@@ -1,8 +1,8 @@
-CMake Warning \(dev\) at NotCXXSourceModules.cmake:6 \(target_sources\):
+CMake Warning \(dev\) at NotCXXSourceModules.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Error in CMakeLists.txt:
diff --git a/Tests/RunCMake/CXXModules/NotCompiledSourceModules-stderr.txt b/Tests/RunCMake/CXXModules/NotCompiledSourceModules-stderr.txt
index 52f4072..c963ce7 100644
--- a/Tests/RunCMake/CXXModules/NotCompiledSourceModules-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NotCompiledSourceModules-stderr.txt
@@ -1,8 +1,8 @@
-CMake Warning \(dev\) at NotCompiledSourceModules.cmake:5 \(target_sources\):
+CMake Warning \(dev\) at NotCompiledSourceModules.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- CMakeLists.txt:6 \(include\)
+ CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
(CMake Error in CMakeLists.txt:
diff --git a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake
index f27eef8..f111b74 100644
--- a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake
@@ -188,6 +188,7 @@ endif ()
if ("export_bmi" IN_LIST CMake_TEST_MODULE_COMPILATION)
run_cxx_module_test(export-interface-no-properties-build)
run_cxx_module_test(export-interface-build)
+ run_cxx_module_test(export-include-directories-build)
run_cxx_module_test(export-usage-build)
run_cxx_module_test(export-bmi-and-interface-build)
@@ -199,6 +200,9 @@ if ("export_bmi" IN_LIST CMake_TEST_MODULE_COMPILATION)
set(test_suffix export-interface-no-properties-build)
run_cxx_module_test(import-modules "import-modules-${test_suffix}" "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/${test_suffix}-build" -DNO_PROPERTIES=1)
+ set(test_suffix export-include-directories-build)
+ run_cxx_module_test(import-modules "import-modules-${test_suffix}" "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/${test_suffix}-build" -DINCLUDE_PROPERTIES=1)
+
set(test_suffix export-bmi-and-interface-build)
run_cxx_module_test(import-modules "import-modules-${test_suffix}" "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/${test_suffix}-build" -DWITH_BMIS=1)
endif ()
@@ -215,6 +219,7 @@ if ("install_bmi" IN_LIST CMake_TEST_MODULE_COMPILATION)
if ("export_bmi" IN_LIST CMake_TEST_MODULE_COMPILATION)
run_cxx_module_test(export-interface-no-properties-install)
run_cxx_module_test(export-interface-install)
+ run_cxx_module_test(export-include-directories-install)
run_cxx_module_test(export-usage-install)
run_cxx_module_test(export-bmi-and-interface-install)
@@ -227,6 +232,9 @@ if ("install_bmi" IN_LIST CMake_TEST_MODULE_COMPILATION)
set(test_suffix export-interface-no-properties-install)
run_cxx_module_test(import-modules "import-modules-${test_suffix}" "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/${test_suffix}-install" -DNO_PROPERTIES=1)
+ set(test_suffix export-include-directories-install)
+ run_cxx_module_test(import-modules "import-modules-${test_suffix}" "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/${test_suffix}-install" -DINCLUDE_PROPERTIES=1)
+
set(test_suffix export-bmi-and-interface-install)
run_cxx_module_test(import-modules "import-modules-${test_suffix}" "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/${test_suffix}-install" -DWITH_BMIS=1)
set(RunCMake_CXXModules_INSTALL 1)
diff --git a/Tests/RunCMake/CXXModules/check-json.cmake b/Tests/RunCMake/CXXModules/check-json.cmake
index 19d0c8a..bb04b36 100644
--- a/Tests/RunCMake/CXXModules/check-json.cmake
+++ b/Tests/RunCMake/CXXModules/check-json.cmake
@@ -2,19 +2,20 @@ cmake_policy(PUSH)
cmake_policy(SET CMP0057 NEW)
function (json_placeholders in out)
- string(REPLACE "<CONFIG>" "${CMAKE_BUILD_TYPE}" in "${in}")
+ string(REPLACE "<CONFIG>" "${CXXModules_config}" in "${in}")
if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
- string(REPLACE "<CONFIG_DIR>" "${CMAKE_BUILD_TYPE}/" in "${in}")
+ string(REPLACE "<CONFIG_DIR>" "/${CXXModules_config}" in "${in}")
else ()
string(REPLACE "<CONFIG_DIR>" "" in "${in}")
endif ()
if (CMAKE_BUILD_TYPE)
- string(REPLACE "<CONFIG_FORCE>" "${CMAKE_BUILD_TYPE}" in "${in}")
+ string(REPLACE "<CONFIG_FORCE>" "${CXXModules_config}" in "${in}")
else ()
string(REPLACE "<CONFIG_FORCE>" "noconfig" in "${in}")
endif ()
string(REPLACE "<SOURCE_DIR>" "${RunCMake_SOURCE_DIR}" in "${in}")
string(REPLACE "<BINARY_DIR>" "${RunCMake_TEST_BINARY_DIR}" in "${in}")
+ string(REPLACE "<OBJEXT>" "${CMAKE_CXX_OUTPUT_EXTENSION}" in "${in}")
set("${out}" "${in}" PARENT_SCOPE)
endfunction ()
@@ -22,6 +23,7 @@ function (check_json_value path actual_type expect_type actual_value expect_valu
if (NOT actual_type STREQUAL expect_type)
list(APPEND RunCMake_TEST_FAILED
"Type mismatch at ${path}: ${actual_type} vs. ${expect_type}")
+ set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
return ()
endif ()
@@ -53,6 +55,8 @@ function (check_json_value path actual_type expect_type actual_value expect_valu
elseif (actual_type STREQUAL OBJECT)
check_json_object("${path}" "${actual_value}" "${expect_value}")
endif ()
+
+ set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
endfunction ()
# Check that two arrays are the same.
@@ -82,6 +86,8 @@ function (check_json_array path actual expect)
string(JSON expect_value GET "${expect}" "${idx}")
check_json_value("${new_path}" "${actual_type}" "${expect_type}" "${actual_value}" "${expect_value}")
endforeach ()
+
+ set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
endfunction ()
# Check that two inner objects are the same.
@@ -131,12 +137,12 @@ function (check_json_object path actual expect)
if (actual_keys_missed)
string(REPLACE ";" ", " actual_keys_missed_text "${actual_keys_missed}")
list(APPEND RunCMake_TEST_FAILED
- "Missing expected members at ${path}: ${actual_keys_missed_text}")
+ "Extra unexpected members at ${path}: ${actual_keys_missed_text}")
endif ()
if (expect_keys_missed)
string(REPLACE ";" ", " expect_keys_missed_text "${expect_keys_missed}")
list(APPEND RunCMake_TEST_FAILED
- "Extra unexpected members at ${path}: ${expect_keys_missed_text}")
+ "Missing expected members at ${path}: ${expect_keys_missed_text}")
endif ()
foreach (key IN LISTS common_keys)
@@ -148,13 +154,15 @@ function (check_json_object path actual expect)
string(JSON expect_value GET "${expect}" "${key}")
check_json_value("${new_path}" "${actual_type}" "${expect_type}" "${actual_value}" "${expect_value}")
endforeach ()
+
+ set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
endfunction ()
# Check that two JSON objects are the same.
function (check_json actual expect)
check_json_object("" "${actual}" "${expect}")
-endfunction ()
-string(REPLACE ";" "; " RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}")
+ set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
+endfunction ()
cmake_policy(POP)
diff --git a/Tests/RunCMake/CXXModules/compiler_introspection.cmake b/Tests/RunCMake/CXXModules/compiler_introspection.cmake
index 0e61383..8c74940 100644
--- a/Tests/RunCMake/CXXModules/compiler_introspection.cmake
+++ b/Tests/RunCMake/CXXModules/compiler_introspection.cmake
@@ -21,6 +21,8 @@ set(CMAKE_CXX_COMPILE_FEATURES \"${CMAKE_CXX_COMPILE_FEATURES}\")
set(CMAKE_MAKE_PROGRAM \"${CMAKE_MAKE_PROGRAM}\")
set(forced_cxx_standard \"${forced_cxx_standard}\")
set(CMAKE_CXX_COMPILER_VERSION \"${CMAKE_CXX_COMPILER_VERSION}\")
+set(CMAKE_CXX_OUTPUT_EXTENSION \"${CMAKE_CXX_OUTPUT_EXTENSION}\")
+set(CXXModules_default_build_type \"${CMAKE_BUILD_TYPE}\")
")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}")
diff --git a/Tests/RunCMake/CXXModules/examples/circular-stderr.txt b/Tests/RunCMake/CXXModules/examples/circular-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/circular-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/circular-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/deep-chain-stderr.txt b/Tests/RunCMake/CXXModules/examples/deep-chain-stderr.txt
index 659414d..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/deep-chain-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/deep-chain-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:15 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/duplicate-stderr.txt b/Tests/RunCMake/CXXModules/examples/duplicate-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/duplicate-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/duplicate-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/export-compile-commands-stderr.txt b/Tests/RunCMake/CXXModules/examples/export-compile-commands-stderr.txt
index e868787..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/export-compile-commands-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/export-compile-commands-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:9 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-build-stderr.txt b/Tests/RunCMake/CXXModules/examples/export-include-directories-build-stderr.txt
new file mode 100644
index 0000000..28a7b1f
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-build-stderr.txt
@@ -0,0 +1,4 @@
+CMake Warning \(dev\) at CMakeLists.txt:[0-9] \(target_sources\):
+ CMake's C\+\+ module support is experimental. It is meant only for
+ experimentation and feedback to CMake developers.
+This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-build/CMakeLists.txt b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/CMakeLists.txt
new file mode 100644
index 0000000..bc2ae7f
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/CMakeLists.txt
@@ -0,0 +1,63 @@
+cmake_minimum_required(VERSION 3.24)
+project(cxx_modules_export_include_directories CXX)
+
+include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake")
+
+add_library(export_include_directories STATIC
+ include/include.h)
+target_sources(export_include_directories
+ PRIVATE
+ forward.cxx
+ PRIVATE
+ FILE_SET modules_private TYPE CXX_MODULES
+ BASE_DIRS
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+ FILES
+ private.cxx
+ PUBLIC
+ FILE_SET modules TYPE CXX_MODULES
+ BASE_DIRS
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+ FILES
+ importable.cxx
+ subdir/importable.cxx
+ )
+target_compile_features(export_include_directories PUBLIC cxx_std_20)
+target_include_directories(export_include_directories
+ PRIVATE
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>")
+
+add_library(no_modules STATIC no_modules.cxx)
+
+install(TARGETS export_include_directories no_modules
+ EXPORT CXXModules
+ FILE_SET modules DESTINATION "lib/cxx/miu")
+export(EXPORT CXXModules
+ NAMESPACE CXXModules::
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/export_include_directories-targets.cmake"
+ CXX_MODULES_DIRECTORY "export_include_directories-cxx-modules")
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/export_include_directories-config.cmake"
+ "include(\"\${CMAKE_CURRENT_LIST_DIR}/export_include_directories-targets.cmake\")
+set(\${CMAKE_FIND_PACKAGE_NAME}_FOUND 1)
+")
+
+set(generator
+ -G "${CMAKE_GENERATOR}")
+if (CMAKE_GENERATOR_TOOLSET)
+ list(APPEND generator
+ -T "${CMAKE_GENERATOR_TOOLSET}")
+endif ()
+if (CMAKE_GENERATOR_PLATFORM)
+ list(APPEND generator
+ -A "${CMAKE_GENERATOR_PLATFORM}")
+endif ()
+
+add_test(NAME export_include_directories_build
+ COMMAND
+ "${CMAKE_COMMAND}"
+ "-Dexpected_source_dir=${CMAKE_CURRENT_SOURCE_DIR}"
+ "-Dexpected_binary_dir=${CMAKE_CURRENT_BINARY_DIR}"
+ "-Dexport_include_directories_DIR=${CMAKE_CURRENT_BINARY_DIR}"
+ ${generator}
+ -S "${CMAKE_CURRENT_SOURCE_DIR}/test"
+ -B "${CMAKE_CURRENT_BINARY_DIR}/test")
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-build/forward.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/forward.cxx
new file mode 100644
index 0000000..7f53271
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/forward.cxx
@@ -0,0 +1,6 @@
+import priv;
+
+int forwarding()
+{
+ return from_private();
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-build/importable.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/importable.cxx
new file mode 100644
index 0000000..6a1d83e
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/importable.cxx
@@ -0,0 +1,18 @@
+module;
+
+#include "include/include.h"
+
+#ifndef include_h_included
+# error "include define not found"
+#endif
+
+export module importable;
+
+extern "C++" {
+int forwarding();
+}
+
+export int from_import()
+{
+ return forwarding();
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-build/include/include.h b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/include/include.h
new file mode 100644
index 0000000..e3eee34
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/include/include.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#define include_h_included
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-build/no_modules.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/no_modules.cxx
new file mode 100644
index 0000000..eea854f
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/no_modules.cxx
@@ -0,0 +1,3 @@
+void no_modules()
+{
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-build/private.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/private.cxx
new file mode 100644
index 0000000..c5b719a
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/private.cxx
@@ -0,0 +1,6 @@
+export module priv;
+
+export int from_private()
+{
+ return 0;
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-build/subdir/importable.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/subdir/importable.cxx
new file mode 100644
index 0000000..07d6af6
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/subdir/importable.cxx
@@ -0,0 +1,6 @@
+export module subdir_importable;
+
+export int from_subdir()
+{
+ return 0;
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-build/test/CMakeLists.txt b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/test/CMakeLists.txt
new file mode 100644
index 0000000..f5bdfd4
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-build/test/CMakeLists.txt
@@ -0,0 +1,20 @@
+cmake_minimum_required(VERSION 3.24)
+project(cxx_modules_library NONE)
+
+set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "ac01f462-0f5f-432a-86aa-acef252918a6")
+
+find_package(export_include_directories REQUIRED)
+
+if (NOT TARGET CXXModules::export_include_directories)
+ message(FATAL_ERROR
+ "Missing imported target")
+endif ()
+
+get_property(include_directories TARGET CXXModules::export_include_directories
+ PROPERTY IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES)
+foreach (include_directory IN LISTS include_directories)
+ if (NOT EXISTS "${include_directory}")
+ message(FATAL_ERROR
+ "Missing include directory in C++ module interface CXXModules::export_include_directories:\n ${include_directory}")
+ endif ()
+endforeach ()
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-install-stderr.txt b/Tests/RunCMake/CXXModules/examples/export-include-directories-install-stderr.txt
new file mode 100644
index 0000000..be89b8c
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-install-stderr.txt
@@ -0,0 +1,4 @@
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
+ CMake's C\+\+ module support is experimental. It is meant only for
+ experimentation and feedback to CMake developers.
+This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-install/CMakeLists.txt b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/CMakeLists.txt
new file mode 100644
index 0000000..444882d
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/CMakeLists.txt
@@ -0,0 +1,69 @@
+cmake_minimum_required(VERSION 3.24)
+project(cxx_modules_export_include_directories CXX)
+
+include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake")
+
+add_library(export_include_directories STATIC
+ include/include.h)
+target_sources(export_include_directories
+ PRIVATE
+ forward.cxx
+ PRIVATE
+ FILE_SET modules_private TYPE CXX_MODULES
+ BASE_DIRS
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+ FILES
+ private.cxx
+ PUBLIC
+ FILE_SET modules TYPE CXX_MODULES
+ BASE_DIRS
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+ FILES
+ importable.cxx
+ subdir/importable.cxx
+ )
+target_compile_features(export_include_directories PUBLIC cxx_std_20)
+target_include_directories(export_include_directories
+ PRIVATE
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
+ "$<INSTALL_INTERFACE:include>")
+
+add_library(no_modules STATIC no_modules.cxx)
+
+install(TARGETS export_include_directories no_modules
+ EXPORT CXXModules
+ FILE_SET modules DESTINATION "lib/cxx/miu")
+install(DIRECTORY include
+ DESTINATION "include")
+install(EXPORT CXXModules
+ NAMESPACE CXXModules::
+ DESTINATION "lib/cmake/export_include_directories"
+ FILE "export_include_directories-targets.cmake"
+ CXX_MODULES_DIRECTORY "export_include_directories-cxx-modules")
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/export_include_directories-config.cmake"
+ "include(\"\${CMAKE_CURRENT_LIST_DIR}/export_include_directories-targets.cmake\")
+set(\${CMAKE_FIND_PACKAGE_NAME}_FOUND 1)
+")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/export_include_directories-config.cmake"
+ DESTINATION "lib/cmake/export_include_directories")
+
+set(generator
+ -G "${CMAKE_GENERATOR}")
+if (CMAKE_GENERATOR_TOOLSET)
+ list(APPEND generator
+ -T "${CMAKE_GENERATOR_TOOLSET}")
+endif ()
+if (CMAKE_GENERATOR_PLATFORM)
+ list(APPEND generator
+ -A "${CMAKE_GENERATOR_PLATFORM}")
+endif ()
+
+add_test(NAME export_include_directories_build
+ COMMAND
+ "${CMAKE_COMMAND}"
+ "-Dexpected_source_dir=${CMAKE_INSTALL_PREFIX}/lib/cxx/miu"
+ "-Dexpected_binary_dir=${CMAKE_INSTALL_PREFIX}/lib/cxx/bmi"
+ "-Dexport_include_directories_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/export_include_directories"
+ ${generator}
+ -S "${CMAKE_CURRENT_SOURCE_DIR}/test"
+ -B "${CMAKE_CURRENT_BINARY_DIR}/test")
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-install/forward.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/forward.cxx
new file mode 100644
index 0000000..7f53271
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/forward.cxx
@@ -0,0 +1,6 @@
+import priv;
+
+int forwarding()
+{
+ return from_private();
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-install/importable.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/importable.cxx
new file mode 100644
index 0000000..6a1d83e
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/importable.cxx
@@ -0,0 +1,18 @@
+module;
+
+#include "include/include.h"
+
+#ifndef include_h_included
+# error "include define not found"
+#endif
+
+export module importable;
+
+extern "C++" {
+int forwarding();
+}
+
+export int from_import()
+{
+ return forwarding();
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-install/include/include.h b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/include/include.h
new file mode 100644
index 0000000..e3eee34
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/include/include.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#define include_h_included
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-install/no_modules.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/no_modules.cxx
new file mode 100644
index 0000000..eea854f
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/no_modules.cxx
@@ -0,0 +1,3 @@
+void no_modules()
+{
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-install/private.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/private.cxx
new file mode 100644
index 0000000..c5b719a
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/private.cxx
@@ -0,0 +1,6 @@
+export module priv;
+
+export int from_private()
+{
+ return 0;
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-install/subdir/importable.cxx b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/subdir/importable.cxx
new file mode 100644
index 0000000..07d6af6
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/subdir/importable.cxx
@@ -0,0 +1,6 @@
+export module subdir_importable;
+
+export int from_subdir()
+{
+ return 0;
+}
diff --git a/Tests/RunCMake/CXXModules/examples/export-include-directories-install/test/CMakeLists.txt b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/test/CMakeLists.txt
new file mode 100644
index 0000000..9cdb7ff
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/export-include-directories-install/test/CMakeLists.txt
@@ -0,0 +1,18 @@
+cmake_minimum_required(VERSION 3.24)
+project(cxx_modules_library NONE)
+
+set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "ac01f462-0f5f-432a-86aa-acef252918a6")
+
+find_package(export_include_directories REQUIRED)
+
+if (NOT TARGET CXXModules::export_include_directories)
+ message(FATAL_ERROR
+ "Missing imported target")
+endif ()
+
+get_property(file_sets TARGET CXXModules::export_include_directories
+ PROPERTY INTERFACE_CXX_MODULE_SETS)
+if (NOT file_sets STREQUAL "modules")
+ message(FATAL_ERROR
+ "Incorrect exported file sets in CXXModules::export_include_directories:\n ${file_sets}")
+endif ()
diff --git a/Tests/RunCMake/CXXModules/examples/export-usage-build-stderr.txt b/Tests/RunCMake/CXXModules/examples/export-usage-build-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/export-usage-build-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/export-usage-build-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/export-usage-install-stderr.txt b/Tests/RunCMake/CXXModules/examples/export-usage-install-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/export-usage-install-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/export-usage-install-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/generated-stderr.txt b/Tests/RunCMake/CXXModules/examples/generated-stderr.txt
index 06160ce..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/generated-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/generated-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:16 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-build-stderr.txt b/Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-build-stderr.txt
index 71ee795..e2970ec 100644
--- a/Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-build-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-build-stderr.txt
@@ -1,7 +1,7 @@
-CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-bmi-and-interface-build-build/export_bmi_and_interfaces-targets.cmake:[0-9]* \(target_sources\):
+CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-bmi-and-interface-build-build/export_bmi_and_interfaces-targets.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- .*/Tests/RunCMake/CXXModules/examples/export-bmi-and-interface-build-build/export_bmi_and_interfaces-config.cmake:1 \(include\)
- CMakeLists.txt:15 \(find_package\)
+ .*/Tests/RunCMake/CXXModules/examples/export-bmi-and-interface-build-build/export_bmi_and_interfaces-config.cmake:[0-9]+ \(include\)
+ CMakeLists.txt:[0-9]+ \(find_package\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-install-stderr.txt b/Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-install-stderr.txt
index d22b2a1..ec5dd1f 100644
--- a/Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-install-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/import-modules-export-bmi-and-interface-install-stderr.txt
@@ -1,7 +1,7 @@
-CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-bmi-and-interface-install-install/lib/cmake/export_bmi_and_interfaces/export_bmi_and_interfaces-targets.cmake:[0-9]* \(target_sources\):
+CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-bmi-and-interface-install-install/lib/cmake/export_bmi_and_interfaces/export_bmi_and_interfaces-targets.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- .*/Tests/RunCMake/CXXModules/examples/export-bmi-and-interface-install-install/lib/cmake/export_bmi_and_interfaces/export_bmi_and_interfaces-config.cmake:1 \(include\)
- CMakeLists.txt:15 \(find_package\)
+ .*/Tests/RunCMake/CXXModules/examples/export-bmi-and-interface-install-install/lib/cmake/export_bmi_and_interfaces/export_bmi_and_interfaces-config.cmake:[0-9]+ \(include\)
+ CMakeLists.txt:[0-9]+ \(find_package\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules-export-include-directories-build-stderr.txt b/Tests/RunCMake/CXXModules/examples/import-modules-export-include-directories-build-stderr.txt
new file mode 100644
index 0000000..4ea3679
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/import-modules-export-include-directories-build-stderr.txt
@@ -0,0 +1,7 @@
+CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-include-directories-build-build/export_include_directories-targets.cmake:[0-9]+ \(target_sources\):
+ CMake's C\+\+ module support is experimental. It is meant only for
+ experimentation and feedback to CMake developers.
+Call Stack \(most recent call first\):
+ .*/Tests/RunCMake/CXXModules/examples/export-include-directories-build-build/export_include_directories-config.cmake:[0-9]+ \(include\)
+ CMakeLists.txt:[0-9]+ \(find_package\)
+This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules-export-include-directories-install-stderr.txt b/Tests/RunCMake/CXXModules/examples/import-modules-export-include-directories-install-stderr.txt
new file mode 100644
index 0000000..50ad6b9
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/examples/import-modules-export-include-directories-install-stderr.txt
@@ -0,0 +1,7 @@
+CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-include-directories-install-install/lib/cmake/export_include_directories/export_include_directories-targets.cmake:[0-9]+ \(target_sources\):
+ CMake's C\+\+ module support is experimental. It is meant only for
+ experimentation and feedback to CMake developers.
+Call Stack \(most recent call first\):
+ .*/Tests/RunCMake/CXXModules/examples/export-include-directories-install-install/lib/cmake/export_include_directories/export_include_directories-config.cmake:[0-9]+ \(include\)
+ CMakeLists.txt:[0-9]+ \(find_package\)
+This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-build-stderr.txt b/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-build-stderr.txt
index f79abbc..10404c6 100644
--- a/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-build-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-build-stderr.txt
@@ -1,7 +1,7 @@
-CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-interface-build-build/export_interfaces-targets.cmake:[0-9]* \(target_sources\):
+CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-interface-build-build/export_interfaces-targets.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- .*/Tests/RunCMake/CXXModules/examples/export-interface-build-build/export_interfaces-config.cmake:1 \(include\)
- CMakeLists.txt:15 \(find_package\)
+ .*/Tests/RunCMake/CXXModules/examples/export-interface-build-build/export_interfaces-config.cmake:[0-9]+ \(include\)
+ CMakeLists.txt:[0-9]+ \(find_package\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-install-stderr.txt b/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-install-stderr.txt
index 32f9452..04124cd 100644
--- a/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-install-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-install-stderr.txt
@@ -1,7 +1,7 @@
-CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-interface-install-install/lib/cmake/export_interfaces/export_interfaces-targets.cmake:[0-9]* \(target_sources\):
+CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-interface-install-install/lib/cmake/export_interfaces/export_interfaces-targets.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- .*/Tests/RunCMake/CXXModules/examples/export-interface-install-install/lib/cmake/export_interfaces/export_interfaces-config.cmake:1 \(include\)
- CMakeLists.txt:15 \(find_package\)
+ .*/Tests/RunCMake/CXXModules/examples/export-interface-install-install/lib/cmake/export_interfaces/export_interfaces-config.cmake:[0-9]+ \(include\)
+ CMakeLists.txt:[0-9]+ \(find_package\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-build-stderr.txt b/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-build-stderr.txt
index 9254936..dcf6498 100644
--- a/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-build-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-build-stderr.txt
@@ -1,7 +1,7 @@
-CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-interface-no-properties-build-build/export_interfaces_no_properties-targets.cmake:[0-9]* \(target_sources\):
+CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-interface-no-properties-build-build/export_interfaces_no_properties-targets.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- .*/Tests/RunCMake/CXXModules/examples/export-interface-no-properties-build-build/export_interfaces_no_properties-config.cmake:1 \(include\)
- CMakeLists.txt:15 \(find_package\)
+ .*/Tests/RunCMake/CXXModules/examples/export-interface-no-properties-build-build/export_interfaces_no_properties-config.cmake:[0-9]+ \(include\)
+ CMakeLists.txt:[0-9]+ \(find_package\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-install-stderr.txt b/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-install-stderr.txt
index 71269f4..7073b4a 100644
--- a/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-install-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/import-modules-export-interface-no-properties-install-stderr.txt
@@ -1,7 +1,7 @@
-CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-interface-no-properties-install-install/lib/cmake/export_interfaces_no_properties/export_interfaces_no_properties-targets.cmake:[0-9]* \(target_sources\):
+CMake Warning \(dev\) at .*/Tests/RunCMake/CXXModules/examples/export-interface-no-properties-install-install/lib/cmake/export_interfaces_no_properties/export_interfaces_no_properties-targets.cmake:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
Call Stack \(most recent call first\):
- .*/Tests/RunCMake/CXXModules/examples/export-interface-no-properties-install-install/lib/cmake/export_interfaces_no_properties/export_interfaces_no_properties-config.cmake:1 \(include\)
- CMakeLists.txt:15 \(find_package\)
+ .*/Tests/RunCMake/CXXModules/examples/export-interface-no-properties-install-install/lib/cmake/export_interfaces_no_properties/export_interfaces_no_properties-config.cmake:[0-9]+ \(include\)
+ CMakeLists.txt:[0-9]+ \(find_package\)
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules/CMakeLists.txt b/Tests/RunCMake/CXXModules/examples/import-modules/CMakeLists.txt
index 3e6f379..946792c 100644
--- a/Tests/RunCMake/CXXModules/examples/import-modules/CMakeLists.txt
+++ b/Tests/RunCMake/CXXModules/examples/import-modules/CMakeLists.txt
@@ -7,6 +7,8 @@ if (NO_PROPERTIES)
set(package_name "export_interfaces_no_properties")
elseif (WITH_BMIS)
set(package_name "export_bmi_and_interfaces")
+elseif (INCLUDE_PROPERTIES)
+ set(package_name "export_include_directories")
else ()
set(package_name "export_interfaces")
endif ()
diff --git a/Tests/RunCMake/CXXModules/examples/import-modules/use.cxx b/Tests/RunCMake/CXXModules/examples/import-modules/use.cxx
index feb38d2..2da1913 100644
--- a/Tests/RunCMake/CXXModules/examples/import-modules/use.cxx
+++ b/Tests/RunCMake/CXXModules/examples/import-modules/use.cxx
@@ -1,3 +1,9 @@
+#if defined(__has_include)
+# if __has_include(<include/include.h>)
+# error "include directories leaked from private module requirements"
+# endif
+#endif
+
import importable;
int main(int argc, char* argv[])
diff --git a/Tests/RunCMake/CXXModules/examples/install-bmi-and-interfaces-stderr.txt b/Tests/RunCMake/CXXModules/examples/install-bmi-and-interfaces-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/install-bmi-and-interfaces-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/install-bmi-and-interfaces-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/install-bmi-stderr.txt b/Tests/RunCMake/CXXModules/examples/install-bmi-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/install-bmi-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/install-bmi-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/internal-partitions-stderr.txt b/Tests/RunCMake/CXXModules/examples/internal-partitions-stderr.txt
index 79c5637..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/internal-partitions-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/internal-partitions-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:10 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/library-shared-stderr.txt b/Tests/RunCMake/CXXModules/examples/library-shared-stderr.txt
index 79c5637..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/library-shared-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/library-shared-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:10 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/library-static-stderr.txt b/Tests/RunCMake/CXXModules/examples/library-static-stderr.txt
index 79c5637..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/library-static-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/library-static-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:10 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/object-library-stderr.txt b/Tests/RunCMake/CXXModules/examples/object-library-stderr.txt
index 4709399..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/object-library-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/object-library-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:[0-9]* \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/partitions-stderr.txt b/Tests/RunCMake/CXXModules/examples/partitions-stderr.txt
index 79c5637..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/partitions-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/partitions-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:10 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/public-req-private-stderr.txt b/Tests/RunCMake/CXXModules/examples/public-req-private-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/public-req-private-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/public-req-private-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/req-private-other-target-stderr.txt b/Tests/RunCMake/CXXModules/examples/req-private-other-target-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/req-private-other-target-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/req-private-other-target-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/same-src-name-stderr.txt b/Tests/RunCMake/CXXModules/examples/same-src-name-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/same-src-name-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/same-src-name-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/scan_properties-stderr.txt b/Tests/RunCMake/CXXModules/examples/scan_properties-stderr.txt
index 34f3f85..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/scan_properties-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/scan_properties-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:25 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/simple-stderr.txt b/Tests/RunCMake/CXXModules/examples/simple-stderr.txt
index 78bdf2b..be89b8c 100644
--- a/Tests/RunCMake/CXXModules/examples/simple-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/simple-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(target_sources\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/try-compile-stderr.txt b/Tests/RunCMake/CXXModules/examples/try-compile-stderr.txt
index 571bb9c..a121e86 100644
--- a/Tests/RunCMake/CXXModules/examples/try-compile-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/try-compile-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:[0-9]* \(try_compile\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(try_compile\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/examples/try-run-stderr.txt b/Tests/RunCMake/CXXModules/examples/try-run-stderr.txt
index 508db55..8eea7a6 100644
--- a/Tests/RunCMake/CXXModules/examples/try-run-stderr.txt
+++ b/Tests/RunCMake/CXXModules/examples/try-run-stderr.txt
@@ -1,4 +1,4 @@
-CMake Warning \(dev\) at CMakeLists.txt:[0-9]* \(try_run\):
+CMake Warning \(dev\) at CMakeLists.txt:[0-9]+ \(try_run\):
CMake's C\+\+ module support is experimental. It is meant only for
experimentation and feedback to CMake developers.
This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-private.json b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-private.json
index 65f0759..45b0396 100644
--- a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-private.json
+++ b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-private.json
@@ -6,9 +6,12 @@
"script-location": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-private.dir/install-cxx-module-bmi-<CONFIG_FORCE>.cmake"
},
"compiler-id": "<IGNORE>",
+ "compiler-frontend-variant": "<IGNORE>",
+ "compiler-simulate-id": "<IGNORE>",
"config": "<CONFIG>",
"cxx-modules": {
- "CMakeFiles/ninja-bmi-install-private.dir/sources/module-internal-part.cxx.o": {
+ "CMakeFiles/ninja-bmi-install-private.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": null,
"name": "internal_partitions",
"relative-directory": "sources",
@@ -16,7 +19,8 @@
"type": "CXX_MODULES",
"visibility": "PRIVATE"
},
- "CMakeFiles/ninja-bmi-install-private.dir/sources/module-part.cxx.o": {
+ "CMakeFiles/ninja-bmi-install-private.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": null,
"name": "modules",
"relative-directory": "",
@@ -24,7 +28,8 @@
"type": "CXX_MODULES",
"visibility": "PRIVATE"
},
- "CMakeFiles/ninja-bmi-install-private.dir/sources/module.cxx.o": {
+ "CMakeFiles/ninja-bmi-install-private.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": null,
"name": "modules",
"relative-directory": "",
@@ -41,5 +46,5 @@
"include-dirs": [],
"language": "CXX",
"linked-target-dirs": [],
- "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-private.dir"
+ "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-private.dir<CONFIG_DIR>"
}
diff --git a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-public.json b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-public.json
index 9c8a895..30b55e3 100644
--- a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-public.json
+++ b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-public.json
@@ -3,12 +3,15 @@
"destination": "lib/cxx/modules/<CONFIG>",
"message-level": "",
"permissions": "",
- "script-location": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-public.dir/install-cxx-module-bmi-noconfig.cmake"
+ "script-location": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-public.dir/install-cxx-module-bmi-<CONFIG_FORCE>.cmake"
},
"compiler-id": "<IGNORE>",
+ "compiler-frontend-variant": "<IGNORE>",
+ "compiler-simulate-id": "<IGNORE>",
"config": "<CONFIG>",
"cxx-modules": {
- "CMakeFiles/ninja-bmi-install-public.dir/sources/module-internal-part.cxx.o": {
+ "CMakeFiles/ninja-bmi-install-public.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": "lib/cxx/internals",
"name": "internal_partitions",
"relative-directory": "sources",
@@ -16,7 +19,8 @@
"type": "CXX_MODULES",
"visibility": "PUBLIC"
},
- "CMakeFiles/ninja-bmi-install-public.dir/sources/module-part.cxx.o": {
+ "CMakeFiles/ninja-bmi-install-public.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": "lib/cxx",
"name": "modules",
"relative-directory": "",
@@ -24,7 +28,8 @@
"type": "CXX_MODULES",
"visibility": "PUBLIC"
},
- "CMakeFiles/ninja-bmi-install-public.dir/sources/module.cxx.o": {
+ "CMakeFiles/ninja-bmi-install-public.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": "lib/cxx",
"name": "modules",
"relative-directory": "",
@@ -41,5 +46,5 @@
"include-dirs": [],
"language": "CXX",
"linked-target-dirs": [],
- "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-public.dir"
+ "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-public.dir<CONFIG_DIR>"
}
diff --git a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-private.json b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-private.json
index 0545981..f06a846 100644
--- a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-private.json
+++ b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-private.json
@@ -1,9 +1,12 @@
{
"bmi-installation": null,
"compiler-id": "<IGNORE>",
+ "compiler-frontend-variant": "<IGNORE>",
+ "compiler-simulate-id": "<IGNORE>",
"config": "<CONFIG>",
"cxx-modules": {
- "CMakeFiles/ninja-exports-private.dir/sources/module-internal-part.cxx.o": {
+ "CMakeFiles/ninja-exports-private.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": null,
"name": "internal_partitions",
"relative-directory": "sources",
@@ -11,7 +14,8 @@
"type": "CXX_MODULES",
"visibility": "PRIVATE"
},
- "CMakeFiles/ninja-exports-private.dir/sources/module-part.cxx.o": {
+ "CMakeFiles/ninja-exports-private.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": null,
"name": "modules",
"relative-directory": "",
@@ -19,7 +23,8 @@
"type": "CXX_MODULES",
"visibility": "PRIVATE"
},
- "CMakeFiles/ninja-exports-private.dir/sources/module.cxx.o": {
+ "CMakeFiles/ninja-exports-private.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": null,
"name": "modules",
"relative-directory": "",
@@ -69,5 +74,5 @@
"include-dirs": [],
"language": "CXX",
"linked-target-dirs": [],
- "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-exports-private.dir"
+ "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-exports-private.dir<CONFIG_DIR>"
}
diff --git a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-public.json b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-public.json
index adc3ae3..938481c 100644
--- a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-public.json
+++ b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-public.json
@@ -1,9 +1,12 @@
{
"bmi-installation": null,
"compiler-id": "<IGNORE>",
+ "compiler-frontend-variant": "<IGNORE>",
+ "compiler-simulate-id": "<IGNORE>",
"config": "<CONFIG>",
"cxx-modules": {
- "CMakeFiles/ninja-exports-public.dir/sources/module-internal-part.cxx.o": {
+ "CMakeFiles/ninja-exports-public.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": "lib/cxx/internals",
"name": "internal_partitions",
"relative-directory": "sources",
@@ -11,7 +14,8 @@
"type": "CXX_MODULES",
"visibility": "PUBLIC"
},
- "CMakeFiles/ninja-exports-public.dir/sources/module-part.cxx.o": {
+ "CMakeFiles/ninja-exports-public.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": "lib/cxx",
"name": "modules",
"relative-directory": "",
@@ -19,7 +23,8 @@
"type": "CXX_MODULES",
"visibility": "PUBLIC"
},
- "CMakeFiles/ninja-exports-public.dir/sources/module.cxx.o": {
+ "CMakeFiles/ninja-exports-public.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": "lib/cxx",
"name": "modules",
"relative-directory": "",
@@ -69,5 +74,5 @@
"include-dirs": [],
"language": "CXX",
"linked-target-dirs": [],
- "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-exports-public.dir"
+ "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-exports-public.dir<CONFIG_DIR>"
}
diff --git a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-private.json b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-private.json
index 9ba6568..3a66a94 100644
--- a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-private.json
+++ b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-private.json
@@ -1,9 +1,12 @@
{
"bmi-installation": null,
"compiler-id": "<IGNORE>",
+ "compiler-frontend-variant": "<IGNORE>",
+ "compiler-simulate-id": "<IGNORE>",
"config": "<CONFIG>",
"cxx-modules": {
- "CMakeFiles/ninja-file-sets-private.dir/sources/module-internal-part.cxx.o": {
+ "CMakeFiles/ninja-file-sets-private.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": null,
"name": "internal_partitions",
"relative-directory": "sources",
@@ -11,7 +14,8 @@
"type": "CXX_MODULES",
"visibility": "PRIVATE"
},
- "CMakeFiles/ninja-file-sets-private.dir/sources/module-part.cxx.o": {
+ "CMakeFiles/ninja-file-sets-private.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": null,
"name": "modules",
"relative-directory": "",
@@ -19,7 +23,8 @@
"type": "CXX_MODULES",
"visibility": "PRIVATE"
},
- "CMakeFiles/ninja-file-sets-private.dir/sources/module.cxx.o": {
+ "CMakeFiles/ninja-file-sets-private.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": null,
"name": "modules",
"relative-directory": "",
@@ -36,5 +41,5 @@
"include-dirs": [],
"language": "CXX",
"linked-target-dirs": [],
- "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-file-sets-private.dir"
+ "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-file-sets-private.dir<CONFIG_DIR>"
}
diff --git a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-public.json b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-public.json
index 46e2cbf..ac06c0f 100644
--- a/Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-public.json
+++ b/Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-public.json
@@ -1,9 +1,12 @@
{
"bmi-installation": null,
"compiler-id": "<IGNORE>",
+ "compiler-frontend-variant": "<IGNORE>",
+ "compiler-simulate-id": "<IGNORE>",
"config": "<CONFIG>",
"cxx-modules": {
- "CMakeFiles/ninja-file-sets-public.dir/<CONFIG_DIR>sources/module-internal-part.cxx.o": {
+ "CMakeFiles/ninja-file-sets-public.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": "lib/cxx/internals",
"name": "internal_partitions",
"relative-directory": "sources",
@@ -11,7 +14,8 @@
"type": "CXX_MODULES",
"visibility": "PUBLIC"
},
- "CMakeFiles/ninja-file-sets-public.dir/<CONFIG_DIR>sources/module-part.cxx.o": {
+ "CMakeFiles/ninja-file-sets-public.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": "lib/cxx",
"name": "modules",
"relative-directory": "",
@@ -19,7 +23,8 @@
"type": "CXX_MODULES",
"visibility": "PUBLIC"
},
- "CMakeFiles/ninja-file-sets-public.dir/<CONFIG_DIR>sources/module.cxx.o": {
+ "CMakeFiles/ninja-file-sets-public.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+ "bmi-only": false,
"destination": "lib/cxx",
"name": "modules",
"relative-directory": "",
@@ -36,5 +41,5 @@
"include-dirs": [],
"language": "CXX",
"linked-target-dirs": [],
- "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-file-sets-public.dir"
+ "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-file-sets-public.dir<CONFIG_DIR>"
}
diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
index 611dde2..52be1bb 100644
--- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
@@ -1125,3 +1125,5 @@ if(RunCMake_GENERATOR MATCHES "^Visual Studio 12 2013")
run_cmake(DeprecateVS12-WARN-ON)
run_cmake_with_options(DeprecateVS12-WARN-OFF -DCMAKE_WARN_VS12=OFF)
endif()
+
+run_cmake_with_options(help-arbitrary "--help" "CMAKE_CXX_IGNORE_EXTENSIONS")
diff --git a/Tests/RunCMake/CommandLine/help-arbitrary-stdout.txt b/Tests/RunCMake/CommandLine/help-arbitrary-stdout.txt
new file mode 100644
index 0000000..3d07e91
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/help-arbitrary-stdout.txt
@@ -0,0 +1,7 @@
+CMAKE_<LANG>_IGNORE_EXTENSIONS
+------------------------------
+
+File extensions that should be ignored by the build.
+
+This is a list of file extensions that may be part of a project for a
+given language but are not compiled.
diff --git a/Tests/RunCMake/GoogleTest/xcode_sign_adhoc.cmake b/Tests/RunCMake/GoogleTest/xcode_sign_adhoc.cmake
index d2dc530..571e4aa 100644
--- a/Tests/RunCMake/GoogleTest/xcode_sign_adhoc.cmake
+++ b/Tests/RunCMake/GoogleTest/xcode_sign_adhoc.cmake
@@ -1,8 +1,14 @@
function(xcode_sign_adhoc target)
if(CMAKE_GENERATOR STREQUAL "Xcode" AND
- "${CMAKE_SYSTEM_NAME};${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "Darwin;arm64")
- # Xcode runs POST_BUILD before signing, so let the linker use ad-hoc signing.
- # See CMake Issue 21845.
- target_link_options(${target} PRIVATE LINKER:-adhoc_codesign)
+ "${CMAKE_SYSTEM_NAME};${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "Darwin;arm64")
+ if(XCODE_VERSION VERSION_GREATER_EQUAL 15)
+ # Xcode 15+ enforces '-Xlinker -no_adhoc_codesign' after user flags,
+ # so we cannot convince the linker to add an adhoc signature.
+ add_custom_command(TARGET ${target} POST_BUILD COMMAND codesign --sign - --force "$<TARGET_FILE:${target}>")
+ else()
+ # Xcode runs POST_BUILD before signing, so let the linker use ad-hoc signing.
+ # See CMake Issue 21845.
+ target_link_options(${target} PRIVATE LINKER:-adhoc_codesign)
+ endif()
endif()
endfunction()
diff --git a/Tests/RunCMake/ObjectLibrary/LinkObjLHSShared.cmake b/Tests/RunCMake/ObjectLibrary/LinkObjLHSShared.cmake
index 3d60556..a1fa7b3 100644
--- a/Tests/RunCMake/ObjectLibrary/LinkObjLHSShared.cmake
+++ b/Tests/RunCMake/ObjectLibrary/LinkObjLHSShared.cmake
@@ -14,8 +14,14 @@ target_link_libraries(LinkObjLHSShared AnObjLib)
# Verify that our dependency on OtherLib generated its versioning symlinks.
if(CMAKE_GENERATOR STREQUAL "Xcode" AND
"${CMAKE_SYSTEM_NAME};${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "Darwin;arm64")
- # Xcode runs POST_BUILD before signing, so let the linker use ad-hoc signing.
- # See CMake Issue 21845.
- target_link_options(LinkObjLHSShared PRIVATE LINKER:-adhoc_codesign)
+ if(XCODE_VERSION VERSION_GREATER_EQUAL 15)
+ # Xcode 15+ enforces '-Xlinker -no_adhoc_codesign' after user flags,
+ # so we cannot convince the linker to add an adhoc signature.
+ add_custom_command(TARGET LinkObjLHSShared POST_BUILD COMMAND codesign --sign - --force "$<TARGET_FILE:LinkObjLHSShared>")
+ else()
+ # Xcode runs POST_BUILD before signing, so let the linker use ad-hoc signing.
+ # See CMake Issue 21845.
+ target_link_options(LinkObjLHSShared PRIVATE LINKER:-adhoc_codesign)
+ endif()
endif()
add_custom_command(TARGET LinkObjLHSShared POST_BUILD COMMAND LinkObjLHSShared)
diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake
index 8939cb7..fcf904e 100644
--- a/Tests/RunCMake/RunCMake.cmake
+++ b/Tests/RunCMake/RunCMake.cmake
@@ -201,6 +201,8 @@ function(run_cmake test)
"|ic(p?c|l): remark #10441: The Intel\\(R\\) C\\+\\+ Compiler Classic \\(ICC\\) is deprecated"
"|[^\n]*install_name_tool: warning: changes being made to the file will invalidate the code signature in:"
+ "|[^\n]*(createItemModels|_NSMainThread|Please file a bug at)"
+ "|[^\n]*xcodebuild[^\n]*DVTAssertions: Warning"
"|[^\n]*xcodebuild[^\n]*DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default"
"|[^\n]*xcodebuild[^\n]*DVTPlugInManager"
"|[^\n]*xcodebuild[^\n]*DVTSDK: Warning: SDK path collision for path"
diff --git a/Tests/RunCMake/XcFramework/RunCMakeTest.cmake b/Tests/RunCMake/XcFramework/RunCMakeTest.cmake
index 22c28b4..9a13892 100644
--- a/Tests/RunCMake/XcFramework/RunCMakeTest.cmake
+++ b/Tests/RunCMake/XcFramework/RunCMakeTest.cmake
@@ -14,25 +14,36 @@ function(create_libraries type)
create_library(${type} ios iOS "arm64" iphoneos)
create_library(${type} tvos tvOS "arm64" appletvos)
create_library(${type} watchos watchOS "armv7k\\\\;arm64_32" watchos)
- if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 15)
- create_library(${type} visionos visionOS "arm64" xros)
- endif()
+ #FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
+ #if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
+ # create_library(${type} visionos visionOS "arm64" xros)
+ #endif()
create_library(${type} ios-simulator iOS "${macos_archs_2}" iphonesimulator)
create_library(${type} tvos-simulator tvOS "${macos_archs_2}" appletvsimulator)
create_library(${type} watchos-simulator watchOS "${watch_sim_archs_2}" watchsimulator)
- if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 15)
- create_library(${type} visionos-simulator visionOS "${macos_archs_2}" xrsimulator)
- endif()
+ #FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
+ #if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
+ # create_library(${type} visionos-simulator visionOS "${macos_archs_2}" xrsimulator)
+ #endif()
endfunction()
function(create_xcframework name type platforms)
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/create-xcframework-${name}-build)
+ if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
+ # 'xcodebuild -create-xcframework' fails on symlinked paths.
+ file(REAL_PATH "${RunCMake_SOURCE_DIR}" src_dir)
+ file(REAL_PATH "${RunCMake_BINARY_DIR}" bld_dir)
+ else()
+ set(src_dir "${RunCMake_SOURCE_DIR}")
+ set(bld_dir "${RunCMake_BINARY_DIR}")
+ endif()
set(args)
foreach(platform IN LISTS platforms)
+ set(lib_dir "${bld_dir}/create-${type}-${platform}-build/install/lib")
if(type STREQUAL "framework")
- list(APPEND args -framework ${RunCMake_BINARY_DIR}/create-${type}-${platform}-build/install/lib/mylib.framework)
+ list(APPEND args -framework ${lib_dir}/mylib.framework)
else()
- list(APPEND args -library ${RunCMake_BINARY_DIR}/create-${type}-${platform}-build/install/lib/libmylib.a -headers ${RunCMake_SOURCE_DIR}/mylib/include)
+ list(APPEND args -library ${lib_dir}/libmylib.a -headers ${src_dir}/mylib/include)
endif()
endforeach()
run_cmake_command(create-xcframework-${name} xcodebuild -create-xcframework ${args} -output ${RunCMake_TEST_BINARY_DIR}/mylib.xcframework)
@@ -51,22 +62,25 @@ function(create_executables name type)
create_executable(${name}-ios ${type} iOS "arm64" iphoneos)
create_executable(${name}-tvos ${type} tvOS "arm64" appletvos)
create_executable(${name}-watchos ${type} watchOS "armv7k\\\\;arm64_32" watchos)
- if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 15)
- create_executable(${name}-visionos ${type} visionOS "arm64" xros)
- endif()
+ #FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
+ #if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
+ # create_executable(${name}-visionos ${type} visionOS "arm64" xros)
+ #endif()
create_executable(${name}-ios-simulator ${type} iOS "${macos_archs_2}" iphonesimulator)
create_executable(${name}-tvos-simulator ${type} tvOS "${macos_archs_2}" appletvsimulator)
create_executable(${name}-watchos-simulator ${type} watchOS "${watch_sim_archs_2}" watchsimulator)
- if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 15)
- create_executable(${name}-visionos-simulator ${type} visionOS "${macos_archs_2}" xrsimulator)
- endif()
+ #FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
+ #if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
+ # create_executable(${name}-visionos-simulator ${type} visionOS "${macos_archs_2}" xrsimulator)
+ #endif()
endfunction()
set(xcframework_platforms macos ios tvos watchos ios-simulator tvos-simulator watchos-simulator)
-if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 15)
- list(APPEND xcframework_platforms visionos visionos-simulator)
-endif()
-if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
+#FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
+#if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 15)
+# list(APPEND xcframework_platforms visionos visionos-simulator)
+#endif()
+if(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 12)
set(macos_archs_1 "x86_64\\;arm64")
set(macos_archs_2 "x86_64\\\\;arm64")
set(watch_sim_archs_2 "x86_64")
@@ -87,7 +101,7 @@ run_cmake_with_options(create-executable-incomplete -DCMAKE_SYSTEM_NAME=Darwin "
create_executables(target-library library)
create_executables(target-framework framework)
run_cmake_with_options(create-executable-target-incomplete -DCMAKE_SYSTEM_NAME=Darwin "-DCMAKE_OSX_ARCHITECTURES=${macos_archs_1}" -DMYLIB_LIBRARY=${RunCMake_BINARY_DIR}/create-xcframework-incomplete-build/mylib.xcframework)
-if(RunCMake_GENERATOR STREQUAL "Xcode" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
+if(RunCMake_GENERATOR STREQUAL "Xcode" AND CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 12)
create_executables(library-link-phase library)
create_executables(framework-link-phase framework)
run_cmake_with_options(create-executable-incomplete-link-phase -DCMAKE_SYSTEM_NAME=Darwin "-DCMAKE_OSX_ARCHITECTURES=${macos_archs_1}" -DMYLIB_LIBRARY=${RunCMake_BINARY_DIR}/create-xcframework-incomplete-build/mylib.xcframework)
diff --git a/Tests/RunCMake/XcodeProject-Device/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject-Device/RunCMakeTest.cmake
index abb357b..e4dbb90 100644
--- a/Tests/RunCMake/XcodeProject-Device/RunCMakeTest.cmake
+++ b/Tests/RunCMake/XcodeProject-Device/RunCMakeTest.cmake
@@ -93,24 +93,25 @@ if(NOT XCODE_VERSION VERSION_LESS 7.1)
unset(RunCMake_TEST_OPTIONS)
endif()
-if(NOT XCODE_VERSION VERSION_LESS 15)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesVisionOS-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=visionOS"
- "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
-
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
-
- run_cmake(XcodeBundles)
- run_cmake_command(XcodeBundles-build-visionOS ${CMAKE_COMMAND} --build .)
- run_cmake_command(XcodeBundles-install-visionOS ${CMAKE_COMMAND} --build . --target install)
-
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
-endif()
+#FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
+#if(NOT XCODE_VERSION VERSION_LESS 15)
+# set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesVisionOS-build)
+# set(RunCMake_TEST_NO_CLEAN 1)
+# set(RunCMake_TEST_OPTIONS
+# "-DCMAKE_SYSTEM_NAME=visionOS"
+# "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
+#
+# file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
+# file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
+#
+# run_cmake(XcodeBundles)
+# run_cmake_command(XcodeBundles-build-visionOS ${CMAKE_COMMAND} --build .)
+# run_cmake_command(XcodeBundles-install-visionOS ${CMAKE_COMMAND} --build . --target install)
+#
+# unset(RunCMake_TEST_BINARY_DIR)
+# unset(RunCMake_TEST_NO_CLEAN)
+# unset(RunCMake_TEST_OPTIONS)
+#endif()
if(NOT XCODE_VERSION VERSION_LESS 7)
set(RunCMake_TEST_OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/osx.cmake")
@@ -261,10 +262,11 @@ if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
deployment_target_test(tvOS appletvsimulator)
deployment_target_test(watchOS watchos)
deployment_target_test(watchOS watchsimulator)
- if(XCODE_VERSION VERSION_GREATER_EQUAL 15)
- deployment_target_test(visionOS xros)
- deployment_target_test(visionOS xrsimulator)
- endif()
+ #FIXME(#25266): Xcode 15.0 does not have visionOS. Improve this condition.
+ #if(XCODE_VERSION VERSION_GREATER_EQUAL 15)
+ # deployment_target_test(visionOS xros)
+ # deployment_target_test(visionOS xrsimulator)
+ #endif()
endif()
if(XCODE_VERSION VERSION_GREATER_EQUAL 8)