mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
Build libSupport with -Werror=global-constructors (NFC)
Ensure that libSupport does not carry any static global initializer. libSupport can be embedded in use cases where we don't want to load all cl::opt unless we want to parse the command line. ManagedStatic can be used to enable lazy-initialization of globals.
This commit is contained in:
parent
d0cd0162ac
commit
77f87f1745
@ -1,5 +1,25 @@
|
||||
include(GetLibraryName)
|
||||
|
||||
# Ensure that libSupport does not carry any static global initializer.
|
||||
# libSupport can be embedded in use cases where we don't want to load all
|
||||
# cl::opt unless we want to parse the command line.
|
||||
# ManagedStatic can be used to enable lazy-initialization of globals.
|
||||
# We don't use `add_flag_if_supported` as instead of compiling an empty file we
|
||||
# check if the current platform is able to compile global std::mutex with this
|
||||
# flag (Linux can, Darwin can't for example).
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=global-constructors")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=global-constructors")
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
#include <mutex>
|
||||
static std::mutex TestGlobalCtorDtor;
|
||||
static std::recursive_mutex TestGlobalCtorDtor2;
|
||||
int main() { (void)TestGlobalCtorDtor; (void)TestGlobalCtorDtor2; return 0;}
|
||||
" LLVM_HAS_NOGLOBAL_CTOR_MUTEX)
|
||||
if (NOT LLVM_HAS_NOGLOBAL_CTOR_MUTEX)
|
||||
string(REPLACE "-Werror=global-constructors" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
string(REPLACE "-Werror=global-constructors" "" CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_ZLIB)
|
||||
set(imported_libs ZLIB::ZLIB)
|
||||
endif()
|
||||
|
Loading…
Reference in New Issue
Block a user