mirror of
https://github.com/Kitware/CMake.git
synced 2026-07-01 04:07:15 +00:00
Tests: Port LinkFlags test to RunCMake
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1 @@
|
||||
.*BADFLAG_EXECUTABLE.*
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1 @@
|
||||
.*BADFLAG_MODULE.*
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1 @@
|
||||
.*BADFLAG_SHARED.*
|
||||
8
Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS.cmake
Normal file
8
Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS.cmake
Normal file
@@ -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)
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1 @@
|
||||
.*BADFLAG_EXECUTABLE_RELEASE.*
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1 @@
|
||||
.*BADFLAG_MODULE_RELEASE.*
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1 @@
|
||||
.*BADFLAG_SHARED_RELEASE.*
|
||||
8
Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG.cmake
Normal file
8
Tests/RunCMake/LinkFlags/CMAKE_LINKER_FLAGS_CONFIG.cmake
Normal file
@@ -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)
|
||||
9
Tests/RunCMake/LinkFlags/CMakeLists.txt
Normal file
9
Tests/RunCMake/LinkFlags/CMakeLists.txt
Normal file
@@ -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)
|
||||
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-result.txt
Normal file
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-result.txt
Normal file
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-stdout.txt
Normal file
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-exe-stdout.txt
Normal file
@@ -0,0 +1 @@
|
||||
.*BADFLAG_EXECUTABLE.*
|
||||
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-result.txt
Normal file
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-result.txt
Normal file
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-stdout.txt
Normal file
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-mod-stdout.txt
Normal file
@@ -0,0 +1 @@
|
||||
.*BADFLAG_MODULE.*
|
||||
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-result.txt
Normal file
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-result.txt
Normal file
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-stdout.txt
Normal file
1
Tests/RunCMake/LinkFlags/LINK_FLAGS-shared-stdout.txt
Normal file
@@ -0,0 +1 @@
|
||||
.*BADFLAG_SHARED.*
|
||||
8
Tests/RunCMake/LinkFlags/LINK_FLAGS.cmake
Normal file
8
Tests/RunCMake/LinkFlags/LINK_FLAGS.cmake
Normal file
@@ -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})
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1 @@
|
||||
.*BADFLAG_EXECUTABLE_RELEASE.*
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1 @@
|
||||
.*BADFLAG_MODULE_RELEASE.*
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1 @@
|
||||
.*BADFLAG_SHARED_RELEASE.*
|
||||
8
Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG.cmake
Normal file
8
Tests/RunCMake/LinkFlags/LINK_FLAGS_CONFIG.cmake
Normal file
@@ -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})
|
||||
4
Tests/RunCMake/LinkFlags/LinkFlagsLib.c
Normal file
4
Tests/RunCMake/LinkFlags/LinkFlagsLib.c
Normal file
@@ -0,0 +1,4 @@
|
||||
int flags_lib(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
45
Tests/RunCMake/LinkFlags/RunCMakeTest.cmake
Normal file
45
Tests/RunCMake/LinkFlags/RunCMakeTest.cmake
Normal file
@@ -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()
|
||||
Reference in New Issue
Block a user