summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake
diff options
context:
space:
mode:
authorVito Gamberini <vito.gamberini@kitware.com>2024-08-07 18:17:18 (GMT)
committerVito Gamberini <vito.gamberini@kitware.com>2024-08-28 19:54:43 (GMT)
commit20e9b59d5e215768956ec131e80e540ed60d2487 (patch)
treea2fd3c4d6adedfe1309526701b240f91955e4cc7 /Tests/RunCMake
parent041a482079baf690f1bf8e9cdc8a7a1922016267 (diff)
downloadCMake-20e9b59d5e215768956ec131e80e540ed60d2487.zip
CMake-20e9b59d5e215768956ec131e80e540ed60d2487.tar.gz
CMake-20e9b59d5e215768956ec131e80e540ed60d2487.tar.bz2
Linking: Add CMAKE_LANG_STANDARD_LINK_DIRECTORIES
Closes: #18222
Diffstat (limited to 'Tests/RunCMake')
-rw-r--r--Tests/RunCMake/CMakeLists.txt1
-rw-r--r--Tests/RunCMake/StandardLinkDirectories/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/StandardLinkDirectories/RunCMakeTest.cmake22
-rw-r--r--Tests/RunCMake/StandardLinkDirectories/TestApp.cmake1
-rw-r--r--Tests/RunCMake/StandardLinkDirectories/TestApp/CMakeLists.txt2
-rw-r--r--Tests/RunCMake/StandardLinkDirectories/TestApp/TestApp.c6
-rw-r--r--Tests/RunCMake/StandardLinkDirectories/TestAppBad-result.txt1
-rw-r--r--Tests/RunCMake/StandardLinkDirectories/TestLib.cmake1
-rw-r--r--Tests/RunCMake/StandardLinkDirectories/TestLib/CMakeLists.txt2
-rw-r--r--Tests/RunCMake/StandardLinkDirectories/TestLib/TestLib.c4
10 files changed, 43 insertions, 0 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 112e530..383c80f 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -491,6 +491,7 @@ if(UNIX AND CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
)
endif()
add_RunCMake_test(ScriptMode)
+add_RunCMake_test(StandardLinkDirectories)
add_RunCMake_test(Swift -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}
-DCMake_TEST_Swift=${CMake_TEST_Swift}
-DXCODE_VERSION=${XCODE_VERSION})
diff --git a/Tests/RunCMake/StandardLinkDirectories/CMakeLists.txt b/Tests/RunCMake/StandardLinkDirectories/CMakeLists.txt
new file mode 100644
index 0000000..ccf88ee
--- /dev/null
+++ b/Tests/RunCMake/StandardLinkDirectories/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 3.30)
+project(${RunCMake_TEST} LANGUAGES C)
+include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/StandardLinkDirectories/RunCMakeTest.cmake b/Tests/RunCMake/StandardLinkDirectories/RunCMakeTest.cmake
new file mode 100644
index 0000000..6760ffc
--- /dev/null
+++ b/Tests/RunCMake/StandardLinkDirectories/RunCMakeTest.cmake
@@ -0,0 +1,22 @@
+include(RunCMake)
+
+# Link should succeed
+block()
+ set(libdir ${RunCMake_BINARY_DIR}/TestLib-build/TestLib/lib)
+ run_cmake(TestLib)
+ run_cmake_with_options(TestApp "-DCMAKE_C_STANDARD_LINK_DIRECTORIES=${libdir}")
+ set(RunCMake_TEST_NO_CLEAN 1)
+ set(RunCMake_TEST_OUTPUT_MERGE 1)
+ run_cmake_command(TestLib ${CMAKE_COMMAND} --build .)
+ run_cmake_command(TestAppGood ${CMAKE_COMMAND} --build ../TestApp-build)
+endblock()
+
+# Link should fail
+block()
+ run_cmake(TestLib)
+ run_cmake(TestApp)
+ set(RunCMake_TEST_NO_CLEAN 1)
+ set(RunCMake_TEST_OUTPUT_MERGE 1)
+ run_cmake_command(TestLib ${CMAKE_COMMAND} --build .)
+ run_cmake_command(TestAppBad ${CMAKE_COMMAND} --build ../TestApp-build)
+endblock()
diff --git a/Tests/RunCMake/StandardLinkDirectories/TestApp.cmake b/Tests/RunCMake/StandardLinkDirectories/TestApp.cmake
new file mode 100644
index 0000000..53a9c9a
--- /dev/null
+++ b/Tests/RunCMake/StandardLinkDirectories/TestApp.cmake
@@ -0,0 +1 @@
+add_subdirectory(TestApp)
diff --git a/Tests/RunCMake/StandardLinkDirectories/TestApp/CMakeLists.txt b/Tests/RunCMake/StandardLinkDirectories/TestApp/CMakeLists.txt
new file mode 100644
index 0000000..92dd52f
--- /dev/null
+++ b/Tests/RunCMake/StandardLinkDirectories/TestApp/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_executable(TestApp TestApp.c)
+target_link_libraries(TestApp PRIVATE SLD)
diff --git a/Tests/RunCMake/StandardLinkDirectories/TestApp/TestApp.c b/Tests/RunCMake/StandardLinkDirectories/TestApp/TestApp.c
new file mode 100644
index 0000000..66630d8
--- /dev/null
+++ b/Tests/RunCMake/StandardLinkDirectories/TestApp/TestApp.c
@@ -0,0 +1,6 @@
+int TestSymbol(void);
+
+int main(void)
+{
+ return TestSymbol();
+}
diff --git a/Tests/RunCMake/StandardLinkDirectories/TestAppBad-result.txt b/Tests/RunCMake/StandardLinkDirectories/TestAppBad-result.txt
new file mode 100644
index 0000000..d197c91
--- /dev/null
+++ b/Tests/RunCMake/StandardLinkDirectories/TestAppBad-result.txt
@@ -0,0 +1 @@
+[^0]
diff --git a/Tests/RunCMake/StandardLinkDirectories/TestLib.cmake b/Tests/RunCMake/StandardLinkDirectories/TestLib.cmake
new file mode 100644
index 0000000..aa8a6c3
--- /dev/null
+++ b/Tests/RunCMake/StandardLinkDirectories/TestLib.cmake
@@ -0,0 +1 @@
+add_subdirectory(TestLib)
diff --git a/Tests/RunCMake/StandardLinkDirectories/TestLib/CMakeLists.txt b/Tests/RunCMake/StandardLinkDirectories/TestLib/CMakeLists.txt
new file mode 100644
index 0000000..bf41631
--- /dev/null
+++ b/Tests/RunCMake/StandardLinkDirectories/TestLib/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_library(SLD TestLib.c)
+set_target_properties(SLD PROPERTIES ARCHIVE_OUTPUT_DIRECTORY $<1:lib>)
diff --git a/Tests/RunCMake/StandardLinkDirectories/TestLib/TestLib.c b/Tests/RunCMake/StandardLinkDirectories/TestLib/TestLib.c
new file mode 100644
index 0000000..e5d2b1c
--- /dev/null
+++ b/Tests/RunCMake/StandardLinkDirectories/TestLib/TestLib.c
@@ -0,0 +1,4 @@
+int TestSymbol(void)
+{
+ return 0;
+}