mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 00:16:30 +00:00
[flang-rt] Use --as-needed for linking flang-rt libraries. (#130856)
This change makes sure that there is no unnecessary library dependencies like libc++/libstdc++.
This commit is contained in:
parent
fdb4b89bc0
commit
eeb27331dc
@ -244,6 +244,12 @@ check_cxx_compiler_flag("-UTESTFLAG" FLANG_RT_SUPPORTS_UNDEFINE_FLAG)
|
||||
# Check whether -fno-lto is supported.
|
||||
check_cxx_compiler_flag(-fno-lto FLANG_RT_HAS_FNO_LTO_FLAG)
|
||||
|
||||
# Check whether -Wl,--as-needed is supported.
|
||||
check_linker_flag(C "LINKER:--as-needed" LINKER_SUPPORTS_AS_NEEDED)
|
||||
if (LINKER_SUPPORTS_AS_NEEDED)
|
||||
set(LINKER_AS_NEEDED_OPT "LINKER:--as-needed")
|
||||
endif()
|
||||
|
||||
# Different platform may have different name for the POSIX thread library.
|
||||
# For example, libpthread.a on AIX. Search for it as it is needed when
|
||||
# building the shared flang_rt.runtime.so.
|
||||
|
@ -145,6 +145,20 @@ function (add_flangrt_library name)
|
||||
if (Threads_FOUND)
|
||||
target_link_libraries(${name_shared} PUBLIC Threads::Threads)
|
||||
endif ()
|
||||
|
||||
# Special dependencies handling for shared libraries only:
|
||||
#
|
||||
# flang-rt libraries must not depend on libc++/libstdc++,
|
||||
# so set the linker language to C to avoid the unnecessary
|
||||
# library dependence. Note that libc++/libstdc++ may still
|
||||
# come through CMAKE_CXX_IMPLICIT_LINK_LIBRARIES.
|
||||
set_target_properties(${name_shared} PROPERTIES LINKER_LANGUAGE C)
|
||||
# Use --as-needed to avoid unnecessary dependencies.
|
||||
if (LINKER_AS_NEEDED_OPT)
|
||||
target_link_options(${name_shared} BEFORE PRIVATE
|
||||
"${LINKER_AS_NEEDED_OPT}"
|
||||
)
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
if (libtargets)
|
||||
|
Loading…
x
Reference in New Issue
Block a user