[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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356587 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9e0d5ed..d9ef20a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -120,6 +120,8 @@
 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.")
diff --git a/cmake/Modules/HandleLibCXXABI.cmake b/cmake/Modules/HandleLibCXXABI.cmake
index 89f2e97..44c59a5 100644
--- a/cmake/Modules/HandleLibCXXABI.cmake
+++ b/cmake/Modules/HandleLibCXXABI.cmake
@@ -103,7 +103,6 @@
     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")
diff --git a/docs/index.rst b/docs/index.rst
index 80c2a8d..0fd3540 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -121,8 +121,6 @@
 
 * 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`__.
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 9af75ef..e73e459 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -136,28 +136,10 @@
 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"
diff --git a/lib/libc++abi.exp b/lib/libc++abi.v1.exp
similarity index 100%
rename from lib/libc++abi.exp
rename to lib/libc++abi.v1.exp
diff --git a/lib/libc++abi2.exp b/lib/libc++abi.v2.exp
similarity index 100%
rename from lib/libc++abi2.exp
rename to lib/libc++abi.v2.exp
diff --git a/lib/libc++sjlj-abi.exp b/lib/libc++sjlj-abi.v1.exp
similarity index 100%
rename from lib/libc++sjlj-abi.exp
rename to lib/libc++sjlj-abi.v1.exp
diff --git a/www/index.html b/www/index.html
index c707bc1..d7563a7 100644
--- a/www/index.html
+++ b/www/index.html
@@ -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>