EricWF created this revision. EricWF added reviewers: mclow.lists, bcraig, dexonsmith. EricWF added a subscriber: cfe-commits.
Libc++ reexports symbols from the system libc++abi using -reexport_symbols_list. This can cause a linker failure if the list contains symbols not defined in the system libc++abi. This patch attempts to detect the OS X version and use it to determine the correct symbol list. It's my understanding that `lib/libc++abi2.exp` should be used on 10.9 and greater. Otherwise 'lib/libc++abi.exp' should be used This fixes PR25666 (https://llvm.org/bugs/show_bug.cgi?id=25666) http://reviews.llvm.org/D20772 Files: lib/CMakeLists.txt Index: lib/CMakeLists.txt =================================================================== --- lib/CMakeLists.txt +++ lib/CMakeLists.txt @@ -88,7 +88,21 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL "libcxxabi" OR LIBCXX_CXX_ABI_LIBNAME STREQUAL "none")) if (NOT DEFINED LIBCXX_LIBCPPABI_VERSION) - set(LIBCXX_LIBCPPABI_VERSION "2") + 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 ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" )
Index: lib/CMakeLists.txt =================================================================== --- lib/CMakeLists.txt +++ lib/CMakeLists.txt @@ -88,7 +88,21 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL "libcxxabi" OR LIBCXX_CXX_ABI_LIBNAME STREQUAL "none")) if (NOT DEFINED LIBCXX_LIBCPPABI_VERSION) - set(LIBCXX_LIBCPPABI_VERSION "2") + 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 ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" )
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits