forked from OSchip/llvm-project
[libc++][CMake] Clean up some of the libc++ re-exporting logic
Summary: This change allows specifying the version of libc++abi's ABI to re-export when configuring CMake. It also clearly identifies which ABI version of libc++abi each export file contains. Finally, it removes hardcoded knowledge about the 10.9 SDK for MacOS, since that knowledge is not relevant anymore. Indeed, libc++ can't be built with the toolchain that came with the 10.9 SDK anyway because the version of Clang it includes is too old (for example if you want to build a working libc++.dylib, you need bugfixes to visibility attributes that are only in recent Clangs). Reviewers: dexonsmith, EricWF Subscribers: mgorny, christof, jkorous, arphaman, libcxx-commits Differential Revision: https://reviews.llvm.org/D59489 llvm-svn: 356587
This commit is contained in:
parent
00b5ecab5d
commit
2d0b4d6bb3
|
@ -120,6 +120,8 @@ option(LIBCXX_ABI_FORCE_MICROSOFT "Ignore auto-detection and force use of the Mi
|
|||
option(LIBCXX_HIDE_FROM_ABI_PER_TU_BY_DEFAULT "Enable per TU ABI insulation by default. To be used by vendors." OFF)
|
||||
set(LIBCXX_ABI_DEFINES "" CACHE STRING "A semicolon separated list of ABI macros to define in the site config header.")
|
||||
option(LIBCXX_USE_COMPILER_RT "Use compiler-rt instead of libgcc" OFF)
|
||||
set(LIBCXX_LIBCPPABI_VERSION "2" CACHE STRING "Version of libc++abi's ABI to re-export from libc++ when re-exporting is enabled.
|
||||
Note that this is not related to the version of libc++'s ABI itself!")
|
||||
|
||||
if (NOT LIBCXX_ENABLE_SHARED AND NOT LIBCXX_ENABLE_STATIC)
|
||||
message(FATAL_ERROR "libc++ must be built as either a shared or static library.")
|
||||
|
|
|
@ -103,7 +103,6 @@ elseif ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libcxxabi")
|
|||
else()
|
||||
set(CXXABI_LIBNAME cxxabi_shared)
|
||||
endif()
|
||||
set(LIBCXX_LIBCPPABI_VERSION "2" PARENT_SCOPE)
|
||||
else()
|
||||
# Assume c++abi is installed in the system, rely on -lc++abi link flag.
|
||||
set(CXXABI_LIBNAME "c++abi")
|
||||
|
|
|
@ -121,8 +121,6 @@ This list contains known issues with libc++
|
|||
|
||||
* Building libc++ with ``-fno-rtti`` is not supported. However
|
||||
linking against it with ``-fno-rtti`` is supported.
|
||||
* On OS X v10.8 and older the CMake option ``-DLIBCXX_LIBCPPABI_VERSION=""``
|
||||
must be used during configuration.
|
||||
|
||||
|
||||
A full list of currently open libc++ bugs can be `found here`__.
|
||||
|
|
|
@ -136,28 +136,10 @@ if (LIBCXX_TARGETING_MSVC)
|
|||
endif()
|
||||
|
||||
if (LIBCXX_OSX_REEXPORT_LIBCXXABI_SYMBOLS)
|
||||
if (NOT DEFINED LIBCXX_LIBCPPABI_VERSION)
|
||||
set(LIBCXX_LIBCPPABI_VERSION "2") # Default value
|
||||
execute_process(
|
||||
COMMAND xcrun --show-sdk-version
|
||||
OUTPUT_VARIABLE sdk_ver
|
||||
RESULT_VARIABLE res
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if (res EQUAL 0)
|
||||
message(STATUS "Found SDK version ${sdk_ver}")
|
||||
string(REPLACE "10." "" sdk_ver "${sdk_ver}")
|
||||
if (sdk_ver LESS 9)
|
||||
set(LIBCXX_LIBCPPABI_VERSION "")
|
||||
else()
|
||||
set(LIBCXX_LIBCPPABI_VERSION "2")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ("armv7" IN_LIST CMAKE_OSX_ARCHITECTURES)
|
||||
set(RE_EXPORT_LIST "${CMAKE_CURRENT_SOURCE_DIR}/libc++sjlj-abi.exp")
|
||||
set(RE_EXPORT_LIST "${CMAKE_CURRENT_SOURCE_DIR}/libc++sjlj-abi.v${LIBCXX_LIBCPPABI_VERSION}.exp")
|
||||
else()
|
||||
set(RE_EXPORT_LIST "${CMAKE_CURRENT_SOURCE_DIR}/libc++abi${LIBCXX_LIBCPPABI_VERSION}.exp")
|
||||
set(RE_EXPORT_LIST "${CMAKE_CURRENT_SOURCE_DIR}/libc++abi.v${LIBCXX_LIBCPPABI_VERSION}.exp")
|
||||
endif()
|
||||
add_link_flags(
|
||||
"-compatibility_version 1"
|
||||
|
|
|
@ -190,11 +190,6 @@
|
|||
Building libc++ with <code>-fno-rtti</code> is not supported. However
|
||||
linking against it with <code>-fno-rtti</code> is supported.
|
||||
</li>
|
||||
<li>
|
||||
On OS X v10.8 and older the CMake option
|
||||
<code>-DLIBCXX_LIBCPPABI_VERSION=""</code> must be used during
|
||||
configuration.
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
|
|
Loading…
Reference in New Issue