mirror of
https://github.com/intel/llvm.git
synced 2026-01-16 13:35:38 +08:00
[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.
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user