Browse Source

Tests: Verify that linker tool is detected and identified where expected

Brad King 1 year ago
parent
commit
459d1cc095

+ 8 - 1
Tests/RunCMake/ParseImplicitLinkInfo/Inspect.cmake

@@ -2,10 +2,17 @@ enable_language(C)
 
 set(info "")
 foreach(var
+    CMAKE_SYSTEM_NAME
+    CMAKE_C_COMPILER
+    CMAKE_C_COMPILER_ID
+    CMAKE_C_COMPILER_VERSION
+    CMAKE_C_COMPILER_LINKER
+    CMAKE_C_COMPILER_LINKER_ID
+    CMAKE_C_COMPILER_LINKER_VERSION
     CMAKE_C_IMPLICIT_LINK_DIRECTORIES
     )
   if(DEFINED ${var})
-    string(APPEND info "set(INFO_${var} \"${${var}}\")\n")
+    string(APPEND info "set(${var} \"${${var}}\")\n")
   endif()
 endforeach()
 

+ 28 - 1
Tests/RunCMake/ParseImplicitLinkInfo/RunCMakeTest.cmake

@@ -2,6 +2,15 @@ include(RunCMake)
 
 run_cmake(ParseImplicitLinkInfo)
 
+# Detect information from the toolchain:
+# - CMAKE_SYSTEM_NAME
+# - CMAKE_C_COMPILER
+# - CMAKE_C_COMPILER_ID
+# - CMAKE_C_COMPILER_VERSION
+# - CMAKE_C_COMPILER_LINKER
+# - CMAKE_C_COMPILER_LINKER_ID
+# - CMAKE_C_COMPILER_LINKER_VERSION
+# - CMAKE_C_IMPLICIT_LINK_DIRECTORIES
 run_cmake(Inspect)
 set(info "${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
 include("${info}")
@@ -10,6 +19,24 @@ if(CMAKE_HOST_UNIX)
   run_cmake_script(DetermineLinkerId)
 endif()
 
-if(INFO_CMAKE_C_IMPLICIT_LINK_DIRECTORIES MATCHES ";")
+if(CMAKE_C_IMPLICIT_LINK_DIRECTORIES MATCHES ";")
   run_cmake_with_options(ExcludeDirs "-Dinfo=${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
 endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|Darwin|Windows|AIX|SunOS)$|BSD"
+    AND NOT CMAKE_C_COMPILER_ID MATCHES "^(Borland|Embarcadero|OpenWatcom|OrangeC|Watcom)$"
+    AND NOT (CMAKE_C_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$" AND CMAKE_SYSTEM_NAME STREQUAL "Windows")
+    AND NOT CMAKE_C_COMPILER_LINKER MATCHES "Visual Studio 9\\.0"
+    AND NOT RunCMake_GENERATOR MATCHES "Visual Studio 9 "
+    )
+  if(NOT CMAKE_C_COMPILER_LINKER OR NOT CMAKE_C_COMPILER_LINKER_ID OR NOT CMAKE_C_COMPILER_LINKER_VERSION)
+    message(SEND_ERROR "C compiler's linker not identified:\n"
+      "  CMAKE_C_COMPILER='${CMAKE_C_COMPILER}'\n"
+      "  CMAKE_C_COMPILER_ID='${CMAKE_C_COMPILER_ID}'\n"
+      "  CMAKE_C_COMPILER_VERSION='${CMAKE_C_COMPILER_VERSION}'\n"
+      "  CMAKE_C_COMPILER_LINKER='${CMAKE_C_COMPILER_LINKER}'\n"
+      "  CMAKE_C_COMPILER_LINKER_ID='${CMAKE_C_COMPILER_LINKER_ID}'\n"
+      "  CMAKE_C_COMPILER_LINKER_VERSION='${CMAKE_C_COMPILER_LINKER_VERSION}'\n"
+      )
+  endif()
+endif()