From 12089b576c74d84ac5622963d0f6f86ac442d6df Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 22 Jan 2026 09:28:45 -0500 Subject: [PATCH 1/5] Tests/RunCMake: Prefer `RunCMake_TEST_EXPECT_*` if set Allow local expectation overrides. --- Tests/RunCMake/RunCMake.cmake | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake index 293cfa238f..e3409b85be 100644 --- a/Tests/RunCMake/RunCMake.cmake +++ b/Tests/RunCMake/RunCMake.cmake @@ -24,11 +24,11 @@ function(run_cmake test) set(top_src "${RunCMake_SOURCE_DIR}") set(top_bin "${RunCMake_BINARY_DIR}") - if(EXISTS ${top_src}/${test}-result.txt) + if(DEFINED RunCMake_TEST_EXPECT_RESULT) + set(expect_result "${RunCMake_TEST_EXPECT_RESULT}") + elseif(EXISTS ${top_src}/${test}-result.txt) file(READ ${top_src}/${test}-result.txt expect_result) string(REGEX REPLACE "\n+$" "" expect_result "${expect_result}") - elseif(DEFINED RunCMake_TEST_EXPECT_RESULT) - set(expect_result "${RunCMake_TEST_EXPECT_RESULT}") else() set(expect_result 0) endif() @@ -43,7 +43,9 @@ function(run_cmake test) endif() foreach(o IN ITEMS stdout stderr config) - if(RunCMake-${o}-file AND EXISTS ${top_src}/${RunCMake-${o}-file}) + if(DEFINED RunCMake_TEST_EXPECT_${o}) + string(REGEX REPLACE "\n+$" "" expect_${o} "${RunCMake_TEST_EXPECT_${o}}") + elseif(RunCMake-${o}-file AND EXISTS ${top_src}/${RunCMake-${o}-file}) file(READ ${top_src}/${RunCMake-${o}-file} expect_${o}) string(REGEX REPLACE "\n+$" "" expect_${o} "${expect_${o}}") elseif(EXISTS ${top_src}/${test}-${o}-${platform_name}.txt) @@ -52,8 +54,6 @@ function(run_cmake test) elseif(EXISTS ${top_src}/${test}-${o}.txt) file(READ ${top_src}/${test}-${o}.txt expect_${o}) string(REGEX REPLACE "\n+$" "" expect_${o} "${expect_${o}}") - elseif(DEFINED RunCMake_TEST_EXPECT_${o}) - string(REGEX REPLACE "\n+$" "" expect_${o} "${RunCMake_TEST_EXPECT_${o}}") else() unset(expect_${o}) endif() From 48e08cb757c97d1f8d4b03dcde9a1acc6a7cb033 Mon Sep 17 00:00:00 2001 From: Tyler Yankee Date: Tue, 20 Jan 2026 10:50:24 -0500 Subject: [PATCH 2/5] Tests/RunCMake: Fix typos in README.rst --- .../{AddRunCMakeTest.cmake => AddRunCMakeTestSuite.cmake} | 0 Tests/RunCMake/README.rst | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) rename Tests/RunCMake/{AddRunCMakeTest.cmake => AddRunCMakeTestSuite.cmake} (100%) diff --git a/Tests/RunCMake/AddRunCMakeTest.cmake b/Tests/RunCMake/AddRunCMakeTestSuite.cmake similarity index 100% rename from Tests/RunCMake/AddRunCMakeTest.cmake rename to Tests/RunCMake/AddRunCMakeTestSuite.cmake diff --git a/Tests/RunCMake/README.rst b/Tests/RunCMake/README.rst index 8df700a68f..5d52cdfa70 100644 --- a/Tests/RunCMake/README.rst +++ b/Tests/RunCMake/README.rst @@ -152,7 +152,7 @@ customized by setting the following variables before a call. ``RunCMake_GENERATOR`` CMake generator to use when configuring projects. - This provided to ``RunCMakeTest.cmake`` scripts automatically + This is provided to ``RunCMakeTest.cmake`` scripts automatically when they are executed, based on the CMake generator used to configure the test suite. @@ -170,18 +170,18 @@ customized by setting the following variables before a call. ``RunCMake_GENERATOR_IS_MULTI_CONFIG`` Boolean value indicating whether ``${RunCMake_GENERATOR}`` is a multi-config generator. - This provided to ``RunCMakeTest.cmake`` scripts automatically + This is provided to ``RunCMakeTest.cmake`` scripts automatically when they are executed, based on the CMake generator used to configure the test suite. ``RunCMake_SOURCE_DIR`` Absolute path to the ``Tests/RunCMake/`` directory in - the CMake source tree. This provided to ``RunCMakeTest.cmake`` + the CMake source tree. This is provided to ``RunCMakeTest.cmake`` scripts automatically when they are executed. ``RunCMake_BINARY_DIR`` Absolute path to the ``Tests/RunCMake/`` directory in - the CMake binary tree. This provided to ``RunCMakeTest.cmake`` + the CMake binary tree. This is provided to ``RunCMakeTest.cmake`` scripts automatically when they are executed. ``RunCMake_TEST_SOURCE_DIR`` From d38c268f4d5bdc3f98510d93560548433c270b41 Mon Sep 17 00:00:00 2001 From: Tyler Yankee Date: Wed, 21 Jan 2026 07:44:31 -0500 Subject: [PATCH 3/5] Tests/LinkStatic: Standardize RunCMake use where possible Test cases which only check for the presence of an expression need not use a custom check script. Prepare for a future commit which adds more such cases so that this test consistently only uses check scripts where needed. Also apply more explicit checking for success or failure for each case. --- Tests/RunCMake/LinkStatic/RunCMakeTest.cmake | 3 +++ .../LinkStatic/STATIC_LIBRARY_OPTIONS-basic-check.cmake | 4 ---- .../LinkStatic/STATIC_LIBRARY_OPTIONS-basic-result.txt | 2 +- .../LinkStatic/STATIC_LIBRARY_OPTIONS-basic-stdout.txt | 1 + .../LinkStatic/STATIC_LIBRARY_OPTIONS-genex-result.txt | 2 +- .../LinkStatic/STATIC_LIBRARY_OPTIONS-shared-check.cmake | 4 ---- .../LinkStatic/STATIC_LIBRARY_OPTIONS-shared-result.txt | 1 - 7 files changed, 6 insertions(+), 11 deletions(-) delete mode 100644 Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-check.cmake create mode 100644 Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-stdout.txt delete mode 100644 Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-shared-check.cmake delete mode 100644 Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-shared-result.txt diff --git a/Tests/RunCMake/LinkStatic/RunCMakeTest.cmake b/Tests/RunCMake/LinkStatic/RunCMakeTest.cmake index d3a8afb219..8ad2b3c02c 100644 --- a/Tests/RunCMake/LinkStatic/RunCMakeTest.cmake +++ b/Tests/RunCMake/LinkStatic/RunCMakeTest.cmake @@ -6,6 +6,9 @@ run_cmake(LINK_SEARCH_STATIC) macro(run_cmake_target test subtest target) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build) set(RunCMake_TEST_NO_CLEAN 1) + if(RunCMake_GENERATOR STREQUAL "Borland Makefiles") + set(RunCMake_TEST_EXPECT_RESULT .) + endif() run_cmake_command(${test}-${subtest} ${CMAKE_COMMAND} --build . --target ${target} ${ARGN}) unset(RunCMake_TEST_BINARY_DIR) diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-check.cmake b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-check.cmake deleted file mode 100644 index 858ce06f7f..0000000000 --- a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-check.cmake +++ /dev/null @@ -1,4 +0,0 @@ - -if (NOT actual_stdout MATCHES "BADFLAG") - set (RunCMake_TEST_FAILED "Not found expected 'BADFLAG'.") -endif() diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-result.txt b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-result.txt index 8d98f9debd..d197c913c2 100644 --- a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-result.txt +++ b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-result.txt @@ -1 +1 @@ -.* +[^0] diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-stdout.txt b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-stdout.txt new file mode 100644 index 0000000000..c335a1966e --- /dev/null +++ b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-basic-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG.* diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-genex-result.txt b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-genex-result.txt index 8d98f9debd..d197c913c2 100644 --- a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-genex-result.txt +++ b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-genex-result.txt @@ -1 +1 @@ -.* +[^0] diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-shared-check.cmake b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-shared-check.cmake deleted file mode 100644 index 8c1e96e612..0000000000 --- a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-shared-check.cmake +++ /dev/null @@ -1,4 +0,0 @@ - -if (actual_stdout MATCHES "BADFLAG") - string (APPEND RunCMake_TEST_FAILED "\nFound unexpected flag 'BADFLAG'.") -endif() diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-shared-result.txt b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-shared-result.txt deleted file mode 100644 index 8d98f9debd..0000000000 --- a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_OPTIONS-shared-result.txt +++ /dev/null @@ -1 +0,0 @@ -.* From e41256b568ab02348aae813fdf51361f75c818d8 Mon Sep 17 00:00:00 2001 From: Tyler Yankee Date: Tue, 20 Jan 2026 11:34:29 -0500 Subject: [PATCH 4/5] Tests: Move LinkFlags static tests to RunCMake.LinkStatic --- Tests/CMakeLists.txt | 12 ++++-------- Tests/LinkFlags/CMakeLists.txt | 6 ------ Tests/LinkFlags/LinkerFlags/CMakeLists.txt | 3 --- .../LinkFlags/LinkerFlagsConfig/CMakeLists.txt | 3 --- .../CMAKE_STATIC_LINKER_FLAGS-basic-result.txt | 1 + .../CMAKE_STATIC_LINKER_FLAGS-basic-stdout.txt | 1 + .../LinkStatic/CMAKE_STATIC_LINKER_FLAGS.cmake | 13 +++++++++++++ ...STATIC_LINKER_FLAGS_CONFIG-basic-result.txt | 1 + ...STATIC_LINKER_FLAGS_CONFIG-basic-stdout.txt | 1 + .../CMAKE_STATIC_LINKER_FLAGS_CONFIG.cmake | 14 ++++++++++++++ Tests/RunCMake/LinkStatic/RunCMakeTest.cmake | 13 +++++++++++++ .../STATIC_LIBRARY_FLAGS-basic-result.txt | 1 + .../STATIC_LIBRARY_FLAGS-basic-stdout.txt | 1 + .../STATIC_LIBRARY_FLAGS-config-result.txt | 1 + .../STATIC_LIBRARY_FLAGS-config-stdout.txt | 1 + .../LinkStatic/STATIC_LIBRARY_FLAGS.cmake | 18 ++++++++++++++++++ 16 files changed, 70 insertions(+), 20 deletions(-) create mode 100644 Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS-basic-result.txt create mode 100644 Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS-basic-stdout.txt create mode 100644 Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS.cmake create mode 100644 Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG-basic-result.txt create mode 100644 Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG-basic-stdout.txt create mode 100644 Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG.cmake create mode 100644 Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-basic-result.txt create mode 100644 Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-basic-stdout.txt create mode 100644 Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-config-result.txt create mode 100644 Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-config-stdout.txt create mode 100644 Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS.cmake diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 61ed91ffb9..af762e8f40 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -782,20 +782,16 @@ if(BUILD_TESTING) set_tests_properties(LinkFlags-${name} PROPERTIES PASS_REGULAR_EXPRESSION "BADFLAG" DEPENDS LinkFlags-${depends}) endmacro() - ADD_LINK_FLAGS_TEST(lib prepare) - ADD_LINK_FLAGS_TEST(dll lib) + ADD_LINK_FLAGS_TEST(dll prepare) ADD_LINK_FLAGS_TEST(mod dll) ADD_LINK_FLAGS_TEST(exe mod) - ADD_LINK_FLAGS_TEST(lib_config exe) - ADD_LINK_FLAGS_TEST(dll_config lib_config) + ADD_LINK_FLAGS_TEST(dll_config exe) ADD_LINK_FLAGS_TEST(mod_config dll_config) ADD_LINK_FLAGS_TEST(exe_config mod_config) - ADD_LINK_FLAGS_TEST(lib_flags exe_config) - ADD_LINK_FLAGS_TEST(dll_flags lib_flags) + ADD_LINK_FLAGS_TEST(dll_flags exe_config) ADD_LINK_FLAGS_TEST(mod_flags dll_flags) ADD_LINK_FLAGS_TEST(exe_flags mod_flags) - ADD_LINK_FLAGS_TEST(lib_flags_config exe_flags) - ADD_LINK_FLAGS_TEST(dll_flags_config lib_flags_config) + ADD_LINK_FLAGS_TEST(dll_flags_config exe_flags) ADD_LINK_FLAGS_TEST(mod_flags_config dll_flags_config) ADD_LINK_FLAGS_TEST(exe_flags_config mod_flags_config) diff --git a/Tests/LinkFlags/CMakeLists.txt b/Tests/LinkFlags/CMakeLists.txt index d2d4149c42..dd2222828b 100644 --- a/Tests/LinkFlags/CMakeLists.txt +++ b/Tests/LinkFlags/CMakeLists.txt @@ -7,9 +7,6 @@ if(BORLAND) set(pre -) endif() -add_library(LinkFlags_lib STATIC LinkFlagsLib.c) -set_property(TARGET LinkFlags_lib PROPERTY STATIC_LIBRARY_FLAGS ${pre}BADFLAG${obj}) - add_library(LinkFlags_dll SHARED LinkFlagsLib.c) set_property(TARGET LinkFlags_dll PROPERTY LINK_FLAGS ${pre}BADFLAG${obj}) @@ -19,9 +16,6 @@ set_property(TARGET LinkFlags_mod PROPERTY LINK_FLAGS ${pre}BADFLAG${obj}) add_executable(LinkFlags_exe LinkFlagsExe.c) set_property(TARGET LinkFlags_exe PROPERTY LINK_FLAGS ${pre}BADFLAG${obj}) -add_library(LinkFlags_lib_config STATIC LinkFlagsLib.c) -set_property(TARGET LinkFlags_lib_config PROPERTY STATIC_LIBRARY_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG_${TEST_CONFIG}${obj}) - add_library(LinkFlags_dll_config SHARED LinkFlagsLib.c) set_property(TARGET LinkFlags_dll_config PROPERTY LINK_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG_${TEST_CONFIG}${obj}) diff --git a/Tests/LinkFlags/LinkerFlags/CMakeLists.txt b/Tests/LinkFlags/LinkerFlags/CMakeLists.txt index 4707f474cd..6f090f8006 100644 --- a/Tests/LinkFlags/LinkerFlags/CMakeLists.txt +++ b/Tests/LinkFlags/LinkerFlags/CMakeLists.txt @@ -1,6 +1,3 @@ -set(CMAKE_STATIC_LINKER_FLAGS ${pre}BADFLAG${obj}) -add_library(LinkFlags_lib_flags STATIC ../LinkFlagsLib.c) - set(CMAKE_SHARED_LINKER_FLAGS ${pre}BADFLAG${obj}) add_library(LinkFlags_dll_flags SHARED ../LinkFlagsLib.c) diff --git a/Tests/LinkFlags/LinkerFlagsConfig/CMakeLists.txt b/Tests/LinkFlags/LinkerFlagsConfig/CMakeLists.txt index 2854fe78b6..530d7ae105 100644 --- a/Tests/LinkFlags/LinkerFlagsConfig/CMakeLists.txt +++ b/Tests/LinkFlags/LinkerFlagsConfig/CMakeLists.txt @@ -1,6 +1,3 @@ -set(CMAKE_STATIC_LINKER_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG${obj}) -add_library(LinkFlags_lib_flags_config STATIC ../LinkFlagsLib.c) - set(CMAKE_SHARED_LINKER_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG${obj}) add_library(LinkFlags_dll_flags_config SHARED ../LinkFlagsLib.c) diff --git a/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS-basic-result.txt b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS-basic-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS-basic-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS-basic-stdout.txt b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS-basic-stdout.txt new file mode 100644 index 0000000000..c335a1966e --- /dev/null +++ b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS-basic-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG.* diff --git a/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS.cmake b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS.cmake new file mode 100644 index 0000000000..f2ef5d1c0c --- /dev/null +++ b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS.cmake @@ -0,0 +1,13 @@ + +enable_language(C) + +set(obj "${CMAKE_C_OUTPUT_EXTENSION}") +if(BORLAND) + set(pre -) +endif() + +set(CMAKE_STATIC_LINKER_FLAGS ${pre}BADFLAG${obj}) +add_library(CMakeStaticLinkerFlags STATIC LinkOptionsLib.c) + +# shared library do not use CMAKE_STATIC_LINKER_FLAGS +add_library(SharedCMakeStaticLinkerFlags SHARED LinkOptionsLib.c) diff --git a/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG-basic-result.txt b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG-basic-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG-basic-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG-basic-stdout.txt b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG-basic-stdout.txt new file mode 100644 index 0000000000..c07d931e0a --- /dev/null +++ b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG-basic-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_RELEASE.* diff --git a/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG.cmake b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG.cmake new file mode 100644 index 0000000000..5c29274a0a --- /dev/null +++ b/Tests/RunCMake/LinkStatic/CMAKE_STATIC_LINKER_FLAGS_CONFIG.cmake @@ -0,0 +1,14 @@ + +enable_language(C) + +set(obj "${CMAKE_C_OUTPUT_EXTENSION}") +if(BORLAND) + set(pre -) +endif() + +# CMAKE_STATIC_LINKER_FLAGS_ variant +set(CMAKE_STATIC_LINKER_FLAGS_RELEASE ${pre}BADFLAG_RELEASE${obj}) +add_library(CMakeStaticLinkerFlags_config STATIC LinkOptionsLib.c) + +# shared library do not use CMAKE_STATIC_LINKER_FLAGS_ +add_library(SharedCMakeStaticLinkerFlags_config SHARED LinkOptionsLib.c) diff --git a/Tests/RunCMake/LinkStatic/RunCMakeTest.cmake b/Tests/RunCMake/LinkStatic/RunCMakeTest.cmake index 8ad2b3c02c..951942f503 100644 --- a/Tests/RunCMake/LinkStatic/RunCMakeTest.cmake +++ b/Tests/RunCMake/LinkStatic/RunCMakeTest.cmake @@ -28,6 +28,19 @@ if (NOT CMAKE_C_COMPILER_ID STREQUAL "Intel") run_cmake_target(STATIC_LIBRARY_OPTIONS genex StaticLinkOptions_genex --config Release) run_cmake_target(STATIC_LIBRARY_OPTIONS shared SharedLinkOptions) + run_cmake(STATIC_LIBRARY_FLAGS) + run_cmake_target(STATIC_LIBRARY_FLAGS basic StaticLinkFlags) + run_cmake_target(STATIC_LIBRARY_FLAGS config StaticLinkFlags_config --config Release) + run_cmake_target(STATIC_LIBRARY_FLAGS shared SharedLinkFlags) + + run_cmake(CMAKE_STATIC_LINKER_FLAGS) + run_cmake_target(CMAKE_STATIC_LINKER_FLAGS basic CMakeStaticLinkerFlags) + run_cmake_target(CMAKE_STATIC_LINKER_FLAGS shared SharedCMakeStaticLinkerFlags) + + run_cmake(CMAKE_STATIC_LINKER_FLAGS_CONFIG) + run_cmake_target(CMAKE_STATIC_LINKER_FLAGS_CONFIG basic CMakeStaticLinkerFlags_config --config Release) + run_cmake_target(CMAKE_STATIC_LINKER_FLAGS_CONFIG shared SharedCMakeStaticLinkerFlags_config --config Release) + unset(RunCMake_TEST_OPTIONS) unset(RunCMake_TEST_OUTPUT_MERGE) endif() diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-basic-result.txt b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-basic-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-basic-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-basic-stdout.txt b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-basic-stdout.txt new file mode 100644 index 0000000000..c335a1966e --- /dev/null +++ b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-basic-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG.* diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-config-result.txt b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-config-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-config-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-config-stdout.txt b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-config-stdout.txt new file mode 100644 index 0000000000..c07d931e0a --- /dev/null +++ b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS-config-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_RELEASE.* diff --git a/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS.cmake b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS.cmake new file mode 100644 index 0000000000..d654b4e3f9 --- /dev/null +++ b/Tests/RunCMake/LinkStatic/STATIC_LIBRARY_FLAGS.cmake @@ -0,0 +1,18 @@ + +enable_language(C) + +set(obj "${CMAKE_C_OUTPUT_EXTENSION}") +if(BORLAND) + set(pre -) +endif() + +add_library(StaticLinkFlags STATIC LinkOptionsLib.c) +set_property(TARGET StaticLinkFlags PROPERTY STATIC_LIBRARY_FLAGS ${pre}BADFLAG${obj}) + +# STATIC_LIBRARY_FLAGS_ variant +add_library(StaticLinkFlags_config STATIC LinkOptionsLib.c) +set_property(TARGET StaticLinkFlags_config PROPERTY STATIC_LIBRARY_FLAGS_RELEASE ${pre}BADFLAG_RELEASE${obj}) + +# shared library do not use property STATIC_LIBRARY_FLAGS +add_library(SharedLinkFlags SHARED LinkOptionsLib.c) +set_property(TARGET SharedLinkFlags PROPERTY STATIC_LIBRARY_FLAGS ${pre}BADFLAG${obj}) From 3ea9d225f7b8223d56c50528ab86a6a5fd96c0d2 Mon Sep 17 00:00:00 2001 From: Tyler Yankee Date: Tue, 20 Jan 2026 12:45:21 -0500 Subject: [PATCH 5/5] Tests: Port LinkFlags test to RunCMake --- Tests/CMakeLists.txt | 34 -------------- Tests/LinkFlags/CMakeLists.txt | 36 --------------- Tests/LinkFlags/LinkFlagsExe.c | 9 ---- Tests/LinkFlags/LinkFlagsLib.c | 9 ---- Tests/LinkFlags/LinkerFlags/CMakeLists.txt | 8 ---- .../LinkerFlagsConfig/CMakeLists.txt | 8 ---- Tests/RunCMake/CMakeLists.txt | 1 + .../CMAKE_LINKER_FLAGS-exe-result.txt | 1 + .../CMAKE_LINKER_FLAGS-exe-stdout.txt | 1 + .../CMAKE_LINKER_FLAGS-mod-result.txt | 1 + .../CMAKE_LINKER_FLAGS-mod-stdout.txt | 1 + .../CMAKE_LINKER_FLAGS-shared-result.txt | 1 + .../CMAKE_LINKER_FLAGS-shared-stdout.txt | 1 + .../LinkFlags/CMAKE_LINKER_FLAGS.cmake | 8 ++++ .../CMAKE_LINKER_FLAGS_CONFIG-exe-result.txt | 1 + .../CMAKE_LINKER_FLAGS_CONFIG-exe-stdout.txt | 1 + .../CMAKE_LINKER_FLAGS_CONFIG-mod-result.txt | 1 + .../CMAKE_LINKER_FLAGS_CONFIG-mod-stdout.txt | 1 + ...MAKE_LINKER_FLAGS_CONFIG-shared-result.txt | 1 + ...MAKE_LINKER_FLAGS_CONFIG-shared-stdout.txt | 1 + .../LinkFlags/CMAKE_LINKER_FLAGS_CONFIG.cmake | 8 ++++ Tests/RunCMake/LinkFlags/CMakeLists.txt | 9 ++++ .../LinkFlags/LINK_FLAGS-exe-result.txt | 1 + .../LinkFlags/LINK_FLAGS-exe-stdout.txt | 1 + .../LinkFlags/LINK_FLAGS-mod-result.txt | 1 + .../LinkFlags/LINK_FLAGS-mod-stdout.txt | 1 + .../LinkFlags/LINK_FLAGS-shared-result.txt | 1 + .../LinkFlags/LINK_FLAGS-shared-stdout.txt | 1 + Tests/RunCMake/LinkFlags/LINK_FLAGS.cmake | 8 ++++ .../LINK_FLAGS_CONFIG-exe-result.txt | 1 + .../LINK_FLAGS_CONFIG-exe-stdout.txt | 1 + .../LINK_FLAGS_CONFIG-mod-result.txt | 1 + .../LINK_FLAGS_CONFIG-mod-stdout.txt | 1 + .../LINK_FLAGS_CONFIG-shared-result.txt | 1 + .../LINK_FLAGS_CONFIG-shared-stdout.txt | 1 + .../LinkFlags/LINK_FLAGS_CONFIG.cmake | 8 ++++ .../LinkFlags/LinkFlagsExe.c} | 0 Tests/RunCMake/LinkFlags/LinkFlagsLib.c | 4 ++ Tests/RunCMake/LinkFlags/RunCMakeTest.cmake | 45 +++++++++++++++++++ 39 files changed, 115 insertions(+), 104 deletions(-) delete mode 100644 Tests/LinkFlags/CMakeLists.txt delete mode 100644 Tests/LinkFlags/LinkFlagsExe.c delete mode 100644 Tests/LinkFlags/LinkFlagsLib.c delete mode 100644 Tests/LinkFlags/LinkerFlags/CMakeLists.txt delete mode 100644 Tests/LinkFlags/LinkerFlagsConfig/CMakeLists.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-exe-result.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-exe-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-mod-result.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-mod-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-shared-result.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-shared-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS.cmake create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-exe-result.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-exe-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-mod-result.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-mod-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-shared-result.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-shared-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG.cmake create mode 100644 Tests/RunCMake/LinkFlags/CMakeLists.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-result.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-result.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-result.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS.cmake create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-exe-result.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-exe-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-mod-result.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-mod-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-shared-result.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-shared-stdout.txt create mode 100644 Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG.cmake rename Tests/{LinkFlags/LinkFlags.c => RunCMake/LinkFlags/LinkFlagsExe.c} (100%) create mode 100644 Tests/RunCMake/LinkFlags/LinkFlagsLib.c create mode 100644 Tests/RunCMake/LinkFlags/RunCMakeTest.cmake diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index af762e8f40..1fb8257a8e 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -761,40 +761,6 @@ if(BUILD_TESTING) ) endif() - add_test(LinkFlags-prepare - ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE} - --build-and-test - "${CMake_SOURCE_DIR}/Tests/LinkFlags" - "${CMake_BINARY_DIR}/Tests/LinkFlags" - ${build_generator_args} - --build-project LinkFlags - --build-target LinkFlags - --build-options - -DTEST_CONFIG=\${CTEST_CONFIGURATION_TYPE} - ) - list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/LinkFlags") - - macro(ADD_LINK_FLAGS_TEST name depends) - add_test(LinkFlags-${name} - ${CMAKE_CMAKE_COMMAND} --build "${CMake_BINARY_DIR}/Tests/LinkFlags" - --target LinkFlags_${name} --config \${CTEST_CONFIGURATION_TYPE} - ) - set_tests_properties(LinkFlags-${name} PROPERTIES - PASS_REGULAR_EXPRESSION "BADFLAG" DEPENDS LinkFlags-${depends}) - endmacro() - ADD_LINK_FLAGS_TEST(dll prepare) - ADD_LINK_FLAGS_TEST(mod dll) - ADD_LINK_FLAGS_TEST(exe mod) - ADD_LINK_FLAGS_TEST(dll_config exe) - ADD_LINK_FLAGS_TEST(mod_config dll_config) - ADD_LINK_FLAGS_TEST(exe_config mod_config) - ADD_LINK_FLAGS_TEST(dll_flags exe_config) - ADD_LINK_FLAGS_TEST(mod_flags dll_flags) - ADD_LINK_FLAGS_TEST(exe_flags mod_flags) - ADD_LINK_FLAGS_TEST(dll_flags_config exe_flags) - ADD_LINK_FLAGS_TEST(mod_flags_config dll_flags_config) - ADD_LINK_FLAGS_TEST(exe_flags_config mod_flags_config) - # test for correct sub-project generation # not implemented in Xcode or Ninja if(NOT CMAKE_GENERATOR MATCHES "Xcode|Ninja|FASTBuild") diff --git a/Tests/LinkFlags/CMakeLists.txt b/Tests/LinkFlags/CMakeLists.txt deleted file mode 100644 index dd2222828b..0000000000 --- a/Tests/LinkFlags/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -cmake_minimum_required(VERSION 3.10) -project(LinkFlags C) - -string(TOUPPER "${TEST_CONFIG}" TEST_CONFIG_UPPER) -set(obj "${CMAKE_C_OUTPUT_EXTENSION}") -if(BORLAND) - set(pre -) -endif() - -add_library(LinkFlags_dll SHARED LinkFlagsLib.c) -set_property(TARGET LinkFlags_dll PROPERTY LINK_FLAGS ${pre}BADFLAG${obj}) - -add_library(LinkFlags_mod MODULE LinkFlagsLib.c) -set_property(TARGET LinkFlags_mod PROPERTY LINK_FLAGS ${pre}BADFLAG${obj}) - -add_executable(LinkFlags_exe LinkFlagsExe.c) -set_property(TARGET LinkFlags_exe PROPERTY LINK_FLAGS ${pre}BADFLAG${obj}) - -add_library(LinkFlags_dll_config SHARED LinkFlagsLib.c) -set_property(TARGET LinkFlags_dll_config PROPERTY LINK_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG_${TEST_CONFIG}${obj}) - -add_library(LinkFlags_mod_config MODULE LinkFlagsLib.c) -set_property(TARGET LinkFlags_mod_config PROPERTY LINK_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG_${TEST_CONFIG}${obj}) - -add_executable(LinkFlags_exe_config LinkFlagsExe.c) -set_property(TARGET LinkFlags_exe_config PROPERTY LINK_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG_${TEST_CONFIG}${obj}) - -add_executable(LinkFlags LinkFlags.c) -if("x${CMAKE_C_COMPILER_ID}" STREQUAL "xMSVC") - set_property(TARGET LinkFlags PROPERTY - LINK_FLAGS "/NODEFAULTLIB:\"libcdg.lib\" /NODEFAULTLIB:\"libcmtg.lib\" /NODEFAULTLIB:\"foomsvcrt.lib\" /NODEFAULTLIB:\"libbar.lib\" /NODEFAULTLIB:\"libfooba.lib\"" - ) -endif() - -add_subdirectory(LinkerFlags) -add_subdirectory(LinkerFlagsConfig) diff --git a/Tests/LinkFlags/LinkFlagsExe.c b/Tests/LinkFlags/LinkFlagsExe.c deleted file mode 100644 index 202d34d261..0000000000 --- a/Tests/LinkFlags/LinkFlagsExe.c +++ /dev/null @@ -1,9 +0,0 @@ -int main(void) -{ - return 0; -} - -/* Intel compiler does not reject bad flags or objects! */ -#if defined(__INTEL_COMPILER) -# error BADFLAG -#endif diff --git a/Tests/LinkFlags/LinkFlagsLib.c b/Tests/LinkFlags/LinkFlagsLib.c deleted file mode 100644 index bd288e9086..0000000000 --- a/Tests/LinkFlags/LinkFlagsLib.c +++ /dev/null @@ -1,9 +0,0 @@ -int flags_lib(void) -{ - return 0; -} - -/* Intel compiler does not reject bad flags or objects! */ -#if defined(__INTEL_COMPILER) -# error BADFLAG -#endif diff --git a/Tests/LinkFlags/LinkerFlags/CMakeLists.txt b/Tests/LinkFlags/LinkerFlags/CMakeLists.txt deleted file mode 100644 index 6f090f8006..0000000000 --- a/Tests/LinkFlags/LinkerFlags/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -set(CMAKE_SHARED_LINKER_FLAGS ${pre}BADFLAG${obj}) -add_library(LinkFlags_dll_flags SHARED ../LinkFlagsLib.c) - -set(CMAKE_MODULE_LINKER_FLAGS ${pre}BADFLAG${obj}) -add_library(LinkFlags_mod_flags MODULE ../LinkFlagsLib.c) - -set(CMAKE_EXE_LINKER_FLAGS ${pre}BADFLAG${obj}) -add_executable(LinkFlags_exe_flags ../LinkFlagsExe.c) diff --git a/Tests/LinkFlags/LinkerFlagsConfig/CMakeLists.txt b/Tests/LinkFlags/LinkerFlagsConfig/CMakeLists.txt deleted file mode 100644 index 530d7ae105..0000000000 --- a/Tests/LinkFlags/LinkerFlagsConfig/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -set(CMAKE_SHARED_LINKER_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG${obj}) -add_library(LinkFlags_dll_flags_config SHARED ../LinkFlagsLib.c) - -set(CMAKE_MODULE_LINKER_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG${obj}) -add_library(LinkFlags_mod_flags_config MODULE ../LinkFlagsLib.c) - -set(CMAKE_EXE_LINKER_FLAGS_${TEST_CONFIG_UPPER} ${pre}BADFLAG${obj}) -add_executable(LinkFlags_exe_flags_config ../LinkFlagsExe.c) diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 483d2b0c15..0203eba508 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -980,6 +980,7 @@ endif() add_RunCMake_test(LinkLibrariesProcessing) add_RunCMake_test(LinkLibrariesStrategy) +add_RunCMake_test(LinkFlags) add_RunCMake_test(File_Archive -DPython_EXECUTABLE=${Python_EXECUTABLE}) add_RunCMake_test(File_Configure) add_RunCMake_test(File_Generate) diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-exe-result.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-exe-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-exe-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-exe-stdout.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-exe-stdout.txt new file mode 100644 index 0000000000..f7fc46c79b --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-exe-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_EXECUTABLE.* diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-mod-result.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-mod-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-mod-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-mod-stdout.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-mod-stdout.txt new file mode 100644 index 0000000000..1a397a59d1 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-mod-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_MODULE.* diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-shared-result.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-shared-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-shared-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-shared-stdout.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-shared-stdout.txt new file mode 100644 index 0000000000..b0ec10e2e3 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS-shared-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_SHARED.* diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS.cmake b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS.cmake new file mode 100644 index 0000000000..efeaf994c3 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS.cmake @@ -0,0 +1,8 @@ +set(CMAKE_SHARED_LINKER_FLAGS ${pre}BADFLAG_SHARED${obj}) +add_library(LinkFlags_shared SHARED LinkFlagsLib.c) + +set(CMAKE_MODULE_LINKER_FLAGS ${pre}BADFLAG_MODULE${obj}) +add_library(LinkFlags_mod MODULE LinkFlagsLib.c) + +set(CMAKE_EXE_LINKER_FLAGS ${pre}BADFLAG_EXECUTABLE${obj}) +add_executable(LinkFlags_exe LinkFlagsExe.c) diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-exe-result.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-exe-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-exe-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-exe-stdout.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-exe-stdout.txt new file mode 100644 index 0000000000..2873b8ee14 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-exe-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_EXECUTABLE_RELEASE.* diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-mod-result.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-mod-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-mod-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-mod-stdout.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-mod-stdout.txt new file mode 100644 index 0000000000..34eba0b729 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-mod-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_MODULE_RELEASE.* diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-shared-result.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-shared-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-shared-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-shared-stdout.txt b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-shared-stdout.txt new file mode 100644 index 0000000000..2465fdb2ae --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG-shared-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_SHARED_RELEASE.* diff --git a/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG.cmake b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG.cmake new file mode 100644 index 0000000000..99234022d4 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG.cmake @@ -0,0 +1,8 @@ +set(CMAKE_SHARED_LINKER_FLAGS_RELEASE ${pre}BADFLAG_SHARED_RELEASE${obj}) +add_library(LinkFlags_shared SHARED LinkFlagsLib.c) + +set(CMAKE_MODULE_LINKER_FLAGS_RELEASE ${pre}BADFLAG_MODULE_RELEASE${obj}) +add_library(LinkFlags_mod MODULE LinkFlagsLib.c) + +set(CMAKE_EXE_LINKER_FLAGS_RELEASE ${pre}BADFLAG_EXECUTABLE_RELEASE${obj}) +add_executable(LinkFlags_exe LinkFlagsExe.c) diff --git a/Tests/RunCMake/LinkFlags/CMakeLists.txt b/Tests/RunCMake/LinkFlags/CMakeLists.txt new file mode 100644 index 0000000000..b258817de4 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.10) +project(${RunCMake_TEST} C) + +set(obj "${CMAKE_C_OUTPUT_EXTENSION}") +if(BORLAND) + set(pre -) +endif() + +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-result.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-stdout.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-stdout.txt new file mode 100644 index 0000000000..f7fc46c79b --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_EXECUTABLE.* diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-result.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-stdout.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-stdout.txt new file mode 100644 index 0000000000..1a397a59d1 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_MODULE.* diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-result.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-stdout.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-stdout.txt new file mode 100644 index 0000000000..b0ec10e2e3 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_SHARED.* diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS.cmake b/Tests/RunCMake/LinkFlags/LINK_FLAGS.cmake new file mode 100644 index 0000000000..dc37e4b19e --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS.cmake @@ -0,0 +1,8 @@ +add_library(LinkFlags_shared SHARED LinkFlagsLib.c) +set_property(TARGET LinkFlags_shared PROPERTY LINK_FLAGS ${pre}BADFLAG_SHARED${obj}) + +add_library(LinkFlags_mod MODULE LinkFlagsLib.c) +set_property(TARGET LinkFlags_mod PROPERTY LINK_FLAGS ${pre}BADFLAG_MODULE${obj}) + +add_executable(LinkFlags_exe LinkFlagsExe.c) +set_property(TARGET LinkFlags_exe PROPERTY LINK_FLAGS ${pre}BADFLAG_EXECUTABLE${obj}) diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-exe-result.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-exe-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-exe-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-exe-stdout.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-exe-stdout.txt new file mode 100644 index 0000000000..2873b8ee14 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-exe-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_EXECUTABLE_RELEASE.* diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-mod-result.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-mod-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-mod-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-mod-stdout.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-mod-stdout.txt new file mode 100644 index 0000000000..34eba0b729 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-mod-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_MODULE_RELEASE.* diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-shared-result.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-shared-result.txt new file mode 100644 index 0000000000..d197c913c2 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-shared-result.txt @@ -0,0 +1 @@ +[^0] diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-shared-stdout.txt b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-shared-stdout.txt new file mode 100644 index 0000000000..2465fdb2ae --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG-shared-stdout.txt @@ -0,0 +1 @@ +.*BADFLAG_SHARED_RELEASE.* diff --git a/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG.cmake b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG.cmake new file mode 100644 index 0000000000..abbb9d36a3 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG.cmake @@ -0,0 +1,8 @@ +add_library(LinkFlags_shared SHARED LinkFlagsLib.c) +set_property(TARGET LinkFlags_shared PROPERTY LINK_FLAGS_RELEASE ${pre}BADFLAG_SHARED_RELEASE${obj}) + +add_library(LinkFlags_mod MODULE LinkFlagsLib.c) +set_property(TARGET LinkFlags_mod PROPERTY LINK_FLAGS_RELEASE ${pre}BADFLAG_MODULE_RELEASE${obj}) + +add_executable(LinkFlags_exe LinkFlagsExe.c) +set_property(TARGET LinkFlags_exe PROPERTY LINK_FLAGS_RELEASE ${pre}BADFLAG_EXECUTABLE_RELEASE${obj}) diff --git a/Tests/LinkFlags/LinkFlags.c b/Tests/RunCMake/LinkFlags/LinkFlagsExe.c similarity index 100% rename from Tests/LinkFlags/LinkFlags.c rename to Tests/RunCMake/LinkFlags/LinkFlagsExe.c diff --git a/Tests/RunCMake/LinkFlags/LinkFlagsLib.c b/Tests/RunCMake/LinkFlags/LinkFlagsLib.c new file mode 100644 index 0000000000..850e0eb6d7 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/LinkFlagsLib.c @@ -0,0 +1,4 @@ +int flags_lib(void) +{ + return 0; +} diff --git a/Tests/RunCMake/LinkFlags/RunCMakeTest.cmake b/Tests/RunCMake/LinkFlags/RunCMakeTest.cmake new file mode 100644 index 0000000000..aa28730f62 --- /dev/null +++ b/Tests/RunCMake/LinkFlags/RunCMakeTest.cmake @@ -0,0 +1,45 @@ +include(RunCMake) + +macro(run_cmake_target test subtest) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build) + set(RunCMake_TEST_NO_CLEAN 1) + run_cmake_command(${test}-${subtest} + ${CMAKE_COMMAND} --build . + --target LinkFlags_${subtest} + ${ARGN} + ) + + unset(RunCMake_TEST_BINARY_DIR) + unset(RunCMake_TEST_NO_CLEAN) +endmacro() + +if (NOT CMAKE_C_COMPILER_ID STREQUAL "Intel") + # Intel compiler does not reject bad flags or objects! + set(RunCMake_TEST_OUTPUT_MERGE TRUE) + if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG) + set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Release) + endif() + + run_cmake(LINK_FLAGS) + run_cmake_target(LINK_FLAGS shared) + run_cmake_target(LINK_FLAGS mod) + run_cmake_target(LINK_FLAGS exe) + + run_cmake(LINK_FLAGS_CONFIG) + run_cmake_target(LINK_FLAGS_CONFIG shared --config Release) + run_cmake_target(LINK_FLAGS_CONFIG mod --config Release) + run_cmake_target(LINK_FLAGS_CONFIG exe --config Release) + + run_cmake(CMAKE_LINKER_FLAGS) + run_cmake_target(CMAKE_LINKER_FLAGS shared) + run_cmake_target(CMAKE_LINKER_FLAGS mod) + run_cmake_target(CMAKE_LINKER_FLAGS exe) + + run_cmake(CMAKE_LINKER_FLAGS_CONFIG) + run_cmake_target(CMAKE_LINKER_FLAGS_CONFIG shared --config Release) + run_cmake_target(CMAKE_LINKER_FLAGS_CONFIG mod --config Release) + run_cmake_target(CMAKE_LINKER_FLAGS_CONFIG exe --config Release) + + unset(RunCMake_TEST_OPTIONS) + unset(RunCMake_TEST_OUTPUT_MERGE) +endif()