[CMake][AIX] Add `-bcdtors:mbr` option when building with IBM XL

Summary:
The `-bcdtors:mbr` option causes processing for constructors and
destructors to omit otherwise-unreferenced members of static libraries,
matching the processing done on Linux, where `--whole-archive` is not
the default. Applying this option is desirable for reducing the
footprint of an installation.

Reviewed By: daltenty

Differential Revision: https://reviews.llvm.org/D79749
This commit is contained in:
Hubert Tong 2020-05-15 17:15:04 -04:00
parent 3f5fc73a9d
commit e3e0367f9b
1 changed files with 6 additions and 0 deletions

View File

@ -196,6 +196,12 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
# XL generates a small number of relocations not of the large model, -bbigtoc is needed.
append("-Wl,-bbigtoc"
CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
# The default behaviour on AIX processes dynamic initialization of non-local variables with
# static storage duration even for archive members that are otherwise unreferenced.
# Since `--whole-archive` is not used by the LLVM build to keep such initializations for Linux,
# we can limit the processing for archive members to only those that are otherwise referenced.
append("-bcdtors:mbr"
CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
endif()
endif()