[Libomptarget] Pass '-Werror=global-constructors' to the libomptarget build (#88531)
Summary: A runtime library should not have global constructors. Everything is now expected to go through the init methods. This patch ensures that global constructors will not accidentally be introduced.pull/92458/head
parent
d311a62e2f
commit
6d2219acab
|
@ -136,6 +136,8 @@ include(LibomptargetGetDependencies)
|
|||
# Set up testing infrastructure.
|
||||
include(OpenMPTesting)
|
||||
|
||||
check_cxx_compiler_flag(-Werror=global-constructors OFFLOAD_HAVE_WERROR_CTOR)
|
||||
|
||||
# LLVM source tree is required at build time for libomptarget
|
||||
if (NOT LIBOMPTARGET_LLVM_INCLUDE_DIRS)
|
||||
message(FATAL_ERROR "Missing definition for LIBOMPTARGET_LLVM_INCLUDE_DIRS")
|
||||
|
@ -207,6 +209,9 @@ set(offload_compile_flags -fno-exceptions)
|
|||
if(NOT LLVM_ENABLE_RTTI)
|
||||
set(offload_compile_flags ${offload_compile_flags} -fno-rtti)
|
||||
endif()
|
||||
if(OFFLOAD_HAVE_WERROR_CTOR)
|
||||
list(APPEND offload_compile_flags -Werror=global-constructors)
|
||||
endif()
|
||||
|
||||
# TODO: Consider enabling LTO by default if supported.
|
||||
# https://cmake.org/cmake/help/latest/module/CheckIPOSupported.html can be used
|
||||
|
|
|
@ -69,8 +69,8 @@ foreach(plugin IN LISTS LIBOMPTARGET_PLUGINS_TO_BUILD)
|
|||
target_link_libraries(omptarget PRIVATE omptarget.rtl.${plugin})
|
||||
endforeach()
|
||||
|
||||
target_compile_options(omptarget PUBLIC ${offload_compile_flags})
|
||||
target_link_options(omptarget PUBLIC ${offload_link_flags})
|
||||
target_compile_options(omptarget PRIVATE ${offload_compile_flags})
|
||||
target_link_options(omptarget PRIVATE ${offload_link_flags})
|
||||
|
||||
# libomptarget.so needs to be aware of where the plugins live as they
|
||||
# are now separated in the build directory.
|
||||
|
|
Loading…
Reference in New Issue