mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-24 07:08:38 -05:00
Merge topic 'hurd-linker'
c4f64cee36CMakeParseImplicitLinkInfo: Do not mistake ld.so for a linkera47283801ehurd: Add GNU linker options4d1066c578hurd: Add more GNU options support Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !10092
This commit is contained in:
@@ -61,7 +61,7 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
|
||||
endif()
|
||||
endif()
|
||||
# Parse implicit linker arguments.
|
||||
set(linker "ld[0-9]*(\\.[a-z]+)?")
|
||||
set(linker "ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)")
|
||||
if(is_lfortran_less_0_40)
|
||||
# lfortran < 0.40 has no way to pass -v to clang/gcc driver.
|
||||
string(APPEND linker "|clang|gcc")
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
include(Platform/GNU-GNU)
|
||||
__gnu_compiler_gnu(C)
|
||||
@@ -0,0 +1,2 @@
|
||||
include(Platform/GNU-GNU)
|
||||
__gnu_compiler_gnu(CXX)
|
||||
@@ -0,0 +1,3 @@
|
||||
include(Platform/GNU-GNU)
|
||||
__gnu_compiler_gnu(Fortran)
|
||||
set(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "")
|
||||
@@ -0,0 +1,27 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
|
||||
# This module is shared by multiple languages; use include blocker.
|
||||
if(__GNU_COMPILER_GNU)
|
||||
return()
|
||||
endif()
|
||||
set(__GNU_COMPILER_GNU 1)
|
||||
|
||||
macro(__gnu_compiler_gnu lang)
|
||||
# We pass this for historical reasons. Projects may have
|
||||
# executables that use dlopen but do not set ENABLE_EXPORTS.
|
||||
set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-rdynamic")
|
||||
|
||||
set(CMAKE_${lang}_VERBOSE_LINK_FLAG "-Wl,-v")
|
||||
|
||||
# linker selection
|
||||
set(CMAKE_${lang}_USING_LINKER_SYSTEM "")
|
||||
set(CMAKE_${lang}_USING_LINKER_LLD "-fuse-ld=lld")
|
||||
set(CMAKE_${lang}_USING_LINKER_BFD "-fuse-ld=bfd")
|
||||
set(CMAKE_${lang}_USING_LINKER_GOLD "-fuse-ld=gold")
|
||||
if(NOT CMAKE_${lang}_COMPILER_ID STREQUAL "GNU"
|
||||
OR CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "12.1")
|
||||
set(CMAKE_${lang}_USING_LINKER_MOLD "-fuse-ld=mold")
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -9,6 +9,27 @@ set(CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG "-Wl,-rpath-link,")
|
||||
set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
|
||||
set(CMAKE_EXE_EXPORTS_C_FLAG "-Wl,--export-dynamic")
|
||||
|
||||
# Shared libraries with no builtin soname may not be linked safely by
|
||||
# specifying the file path.
|
||||
set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1)
|
||||
|
||||
# Initialize C link type selection flags. These flags are used when
|
||||
# building a shared library, shared module, or executable that links
|
||||
# to other libraries to select whether to use the static or shared
|
||||
# versions of the libraries.
|
||||
foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
|
||||
set(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Wl,-Bstatic")
|
||||
set(CMAKE_${type}_LINK_DYNAMIC_C_FLAGS "-Wl,-Bdynamic")
|
||||
endforeach()
|
||||
|
||||
|
||||
# Features for LINK_GROUP generator expression
|
||||
## RESCAN: request the linker to rescan static libraries until there is
|
||||
## no pending undefined symbols
|
||||
set(CMAKE_LINK_GROUP_USING_RESCAN "LINKER:--start-group" "LINKER:--end-group")
|
||||
set(CMAKE_LINK_GROUP_USING_RESCAN_SUPPORTED TRUE)
|
||||
|
||||
|
||||
# Debian policy requires that shared libraries be installed without
|
||||
# executable permission. Fedora policy requires that shared libraries
|
||||
# be installed with the executable permission. Since the native tools
|
||||
|
||||
Reference in New Issue
Block a user