Tests: Add unit tests for internal cmake_determine_linker_id helper

This commit is contained in:
Brad King
2023-12-12 09:52:34 -05:00
parent edb10c5325
commit bd31a35899
27 changed files with 106 additions and 0 deletions
@@ -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()
@@ -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
View File
@@ -0,0 +1,2 @@
#!/bin/sh
echo 'ld: LD 7.3.1(6/9/22)'
@@ -0,0 +1 @@
set(CMAKE_SYSTEM_NAME "AIX")
@@ -0,0 +1,2 @@
CMAKE_C_COMPILER_LINKER_ID='AIX'
CMAKE_C_COMPILER_LINKER_VERSION='7.3.1'
@@ -0,0 +1,2 @@
#!/bin/sh
echo 'GNU ld (GNU Binutils for Debian) 2.40'
@@ -0,0 +1,3 @@
CMAKE_C_COMPILER_LINKER_ID='GNU'
CMAKE_C_COMPILER_LINKER_VERSION='2.40'
CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'
@@ -0,0 +1,2 @@
#!/bin/sh
echo 'GNU gold (GNU Binutils for Debian 2.40) 1.16'
@@ -0,0 +1,3 @@
CMAKE_C_COMPILER_LINKER_ID='GNUgold'
CMAKE_C_COMPILER_LINKER_VERSION='1.16'
CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'
@@ -0,0 +1,2 @@
#!/bin/sh
echo 'Debian LLD 14.0.6 (compatible with GNU linkers)'
@@ -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'
@@ -0,0 +1,2 @@
#!/bin/sh
echo 'mold 1.10.1 (compatible with GNU ld)'
@@ -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'
@@ -0,0 +1,2 @@
#!/bin/sh
echo 'GNU gold (version 2.40-13.fc39) 1.16'
@@ -0,0 +1,3 @@
CMAKE_C_COMPILER_LINKER_ID='GNUgold'
CMAKE_C_COMPILER_LINKER_VERSION='1.16'
CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'
@@ -0,0 +1,2 @@
#!/bin/sh
echo 'LLD 17.0.4 (compatible with GNU linkers)'
@@ -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'
@@ -0,0 +1,2 @@
#!/bin/sh
echo 'mold 2.4.0 (compatible with GNU ld)'
@@ -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'
@@ -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]'
@@ -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'
@@ -0,0 +1,2 @@
#!/bin/sh
echo 'ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.2458'
@@ -0,0 +1 @@
set(CMAKE_SYSTEM_NAME "SunOS")
@@ -0,0 +1,2 @@
CMAKE_C_COMPILER_LINKER_ID='Solaris'
CMAKE_C_COMPILER_LINKER_VERSION='5.11-1.2458'
@@ -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:'
@@ -0,0 +1 @@
set(CMAKE_SYSTEM_NAME "Darwin")
@@ -0,0 +1,3 @@
CMAKE_C_COMPILER_LINKER_ID='AppleClang'
CMAKE_C_COMPILER_LINKER_VERSION='1022.1'
CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU'