Browse Source

Tests: Add unit tests for internal cmake_determine_linker_id helper

Brad King 2 years ago
parent
commit
bd31a35899
27 changed files with 106 additions and 0 deletions
  1. 36 0
      Tests/RunCMake/ParseImplicitLinkInfo/DetermineLinkerId.cmake
  2. 4 0
      Tests/RunCMake/ParseImplicitLinkInfo/RunCMakeTest.cmake
  3. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/aix7.3-ld.bash
  4. 1 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/aix7.3-ld.cmake
  5. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/aix7.3-ld.txt
  6. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.bfd.bash
  7. 3 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.bfd.txt
  8. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.gold.bash
  9. 3 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.gold.txt
  10. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.lld.bash
  11. 3 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.lld.txt
  12. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.mold.bash
  13. 3 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.mold.txt
  14. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.gold.bash
  15. 3 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.gold.txt
  16. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.lld.bash
  17. 3 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.lld.txt
  18. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.mold.bash
  19. 3 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.mold.txt
  20. 5 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/msvc14.36-link.bash
  21. 3 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/msvc14.36-link.txt
  22. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/sunos5.11-ld.bash
  23. 1 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/sunos5.11-ld.cmake
  24. 2 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/sunos5.11-ld.txt
  25. 9 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/xcode15.1-ld.bash
  26. 1 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/xcode15.1-ld.cmake
  27. 3 0
      Tests/RunCMake/ParseImplicitLinkInfo/ld-v/xcode15.1-ld.txt

+ 36 - 0
Tests/RunCMake/ParseImplicitLinkInfo/DetermineLinkerId.cmake

@@ -0,0 +1,36 @@
+include(${CMAKE_ROOT}/Modules/Internal/CMakeDetermineLinkerId.cmake)
+
+set(tools
+  aix7.3-ld
+  debian12-ld.bfd
+  debian12-ld.gold
+  debian12-ld.lld
+  debian12-ld.mold
+  fedora39-ld.gold
+  fedora39-ld.lld
+  fedora39-ld.mold
+  msvc14.36-link
+  sunos5.11-ld
+  xcode15.1-ld
+  )
+
+foreach(tool IN LISTS tools)
+  block()
+    include(${CMAKE_CURRENT_LIST_DIR}/ld-v/${tool}.cmake OPTIONAL)
+    cmake_determine_linker_id(C ${CMAKE_CURRENT_LIST_DIR}/ld-v/${tool}.bash)
+    file(STRINGS ${CMAKE_CURRENT_LIST_DIR}/ld-v/${tool}.txt results)
+    foreach(result IN LISTS results)
+      if(result MATCHES "^([A-Z_]+)='([^']*)'")
+        set(expect_var "${CMAKE_MATCH_1}")
+        set(expect_val "${CMAKE_MATCH_2}")
+        if(NOT "x${${expect_var}}" STREQUAL "x${expect_val}")
+          message(SEND_ERROR "${tool} result\n"
+            "  ${expect_var}='${${expect_var}}'\n"
+            "is not expected\n"
+            "  ${expect_var}='${expect_val}'\n"
+            )
+        endif()
+      endif()
+    endforeach()
+  endblock()
+endforeach()

+ 4 - 0
Tests/RunCMake/ParseImplicitLinkInfo/RunCMakeTest.cmake

@@ -6,6 +6,10 @@ run_cmake(Inspect)
 set(info "${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
 include("${info}")
 
+if(CMAKE_HOST_UNIX)
+  run_cmake_script(DetermineLinkerId)
+endif()
+
 if(INFO_CMAKE_C_IMPLICIT_LINK_DIRECTORIES MATCHES ";")
   run_cmake_with_options(ExcludeDirs "-Dinfo=${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
 endif()

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/aix7.3-ld.bash

@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'ld: LD 7.3.1(6/9/22)'

+ 1 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/aix7.3-ld.cmake

@@ -0,0 +1 @@
+set(CMAKE_SYSTEM_NAME "AIX")

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/aix7.3-ld.txt

@@ -0,0 +1,2 @@
+CMAKE_C_COMPILER_LINKER_ID='AIX'
+CMAKE_C_COMPILER_LINKER_VERSION='7.3.1'

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.bfd.bash

@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'GNU ld (GNU Binutils for Debian) 2.40'

+ 3 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.bfd.txt

@@ -0,0 +1,3 @@
+CMAKE_C_COMPILER_LINKER_ID='GNU'
+CMAKE_C_COMPILER_LINKER_VERSION='2.40'
+CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.gold.bash

@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'GNU gold (GNU Binutils for Debian 2.40) 1.16'

+ 3 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.gold.txt

@@ -0,0 +1,3 @@
+CMAKE_C_COMPILER_LINKER_ID='GNUgold'
+CMAKE_C_COMPILER_LINKER_VERSION='1.16'
+CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.lld.bash

@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'Debian LLD 14.0.6 (compatible with GNU linkers)'

+ 3 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.lld.txt

@@ -0,0 +1,3 @@
+CMAKE_C_COMPILER_LINKER_ID='LLD'
+CMAKE_C_COMPILER_LINKER_VERSION='14.0.6'
+CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.mold.bash

@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'mold 1.10.1 (compatible with GNU ld)'

+ 3 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/debian12-ld.mold.txt

@@ -0,0 +1,3 @@
+CMAKE_C_COMPILER_LINKER_ID='MOLD'
+CMAKE_C_COMPILER_LINKER_VERSION='1.10.1'
+CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.gold.bash

@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'GNU gold (version 2.40-13.fc39) 1.16'

+ 3 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.gold.txt

@@ -0,0 +1,3 @@
+CMAKE_C_COMPILER_LINKER_ID='GNUgold'
+CMAKE_C_COMPILER_LINKER_VERSION='1.16'
+CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.lld.bash

@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'LLD 17.0.4 (compatible with GNU linkers)'

+ 3 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.lld.txt

@@ -0,0 +1,3 @@
+CMAKE_C_COMPILER_LINKER_ID='LLD'
+CMAKE_C_COMPILER_LINKER_VERSION='17.0.4'
+CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.mold.bash

@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'mold 2.4.0 (compatible with GNU ld)'

+ 3 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.mold.txt

@@ -0,0 +1,3 @@
+CMAKE_C_COMPILER_LINKER_ID='MOLD'
+CMAKE_C_COMPILER_LINKER_VERSION='2.4.0'
+CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'

+ 5 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/msvc14.36-link.bash

@@ -0,0 +1,5 @@
+#!/bin/sh
+echo 'Microsoft (R) Incremental Linker Version 14.36.32543.0
+Copyright (C) Microsoft Corporation.  All rights reserved.
+
+ usage: LINK [options] [files] [@commandfile]'

+ 3 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/msvc14.36-link.txt

@@ -0,0 +1,3 @@
+CMAKE_C_COMPILER_LINKER_ID='MSVC'
+CMAKE_C_COMPILER_LINKER_VERSION='14.36.32543.0'
+CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='MSVC'

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/sunos5.11-ld.bash

@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.2458'

+ 1 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/sunos5.11-ld.cmake

@@ -0,0 +1 @@
+set(CMAKE_SYSTEM_NAME "SunOS")

+ 2 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/sunos5.11-ld.txt

@@ -0,0 +1,2 @@
+CMAKE_C_COMPILER_LINKER_ID='Solaris'
+CMAKE_C_COMPILER_LINKER_VERSION='5.11-1.2458'

+ 9 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/xcode15.1-ld.bash

@@ -0,0 +1,9 @@
+#!/bin/sh
+echo '@(#)PROGRAM:ld  PROJECT:dyld-1022.1
+BUILD 13:21:42 Nov 10 2023
+configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h
+will use ld-classic for: armv6 armv7 armv7s arm64_32 i386 armv6m armv7k armv7m armv7em
+LTO support using: LLVM version 15.0.0 (static support for 29, runtime is 29)
+TAPI support using: Apple TAPI version 15.0.0 (tapi-1500.0.12.8)
+Library search paths:
+Framework search paths:'

+ 1 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/xcode15.1-ld.cmake

@@ -0,0 +1 @@
+set(CMAKE_SYSTEM_NAME "Darwin")

+ 3 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ld-v/xcode15.1-ld.txt

@@ -0,0 +1,3 @@
+CMAKE_C_COMPILER_LINKER_ID='AppleClang'
+CMAKE_C_COMPILER_LINKER_VERSION='1022.1'
+CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'