Author: ericwf Date: Tue Oct 13 19:22:05 2015 New Revision: 250261 URL: http://llvm.org/viewvc/llvm-project?rev=250261&view=rev Log: Use __config_site when building libc++. Also cleanup ABI versioning doc
Added: libcxx/trunk/docs/DesignDocs/ABIVersioning.rst Removed: libcxx/trunk/docs/Abi.rst Modified: libcxx/trunk/CMakeLists.txt libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake libcxx/trunk/docs/index.rst libcxx/trunk/test/libcxx/test/config.py Modified: libcxx/trunk/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/CMakeLists.txt?rev=250261&r1=250260&r2=250261&view=diff ============================================================================== --- libcxx/trunk/CMakeLists.txt (original) +++ libcxx/trunk/CMakeLists.txt Tue Oct 13 19:22:05 2015 @@ -321,6 +321,9 @@ if (LIBCXX_NEEDS_SITE_CONFIG) include/__config_site.in ${LIBCXX_BINARY_DIR}/__config_site @ONLY) + # Provide the config definitions by included the generated __config_site + # file at compile time. + add_compile_flags("-include ${LIBCXX_BINARY_DIR}/__config_site") endif() #=============================================================================== Modified: libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake?rev=250261&r1=250260&r2=250261&view=diff ============================================================================== --- libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake (original) +++ libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake Tue Oct 13 19:22:05 2015 @@ -49,10 +49,12 @@ macro(define_if_not condition def) endif() endmacro() +# Add a macro definition to the __config_site file if the specified condition +# is 'true'. Note that '-D${def}' is not added. Instead it is expected that +# the build include the '__config_site' header. macro(config_define_if condition def) if (${condition}) set(${def} ON) - add_definitions(-D${def}) set(LIBCXX_NEEDS_SITE_CONFIG ON) endif() endmacro() @@ -60,14 +62,12 @@ endmacro() macro(config_define_if_not condition def) if (NOT ${condition}) set(${def} ON) - add_definitions(-D${def}) set(LIBCXX_NEEDS_SITE_CONFIG ON) endif() endmacro() macro(config_define value def) set(${def} ${value}) - add_definitions(-D${def}=${value}) set(LIBCXX_NEEDS_SITE_CONFIG ON) endmacro() Removed: libcxx/trunk/docs/Abi.rst URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/docs/Abi.rst?rev=250260&view=auto ============================================================================== --- libcxx/trunk/docs/Abi.rst (original) +++ libcxx/trunk/docs/Abi.rst (removed) @@ -1,17 +0,0 @@ - -==================== -Libc++ ABI stability -==================== - -Libc++ aims to preserve stable ABI to avoid subtle bugs when code built to the old ABI -is linked with the code build to the new ABI. At the same time, libc++ allows ABI-breaking -improvements and bugfixes for the scenarios when ABI change is not a issue. - -To support both cases, libc++ allows specifying the ABI version at the -build time. The version is defined with a cmake option -LIBCXX_ABI_VERSION. Another option LIBCXX_ABI_UNSTABLE can be used to -include all present ABI breaking features. These options translate -into C++ macro definitions _LIBCPP_ABI_VERSION, _LIBCPP_ABI_UNSTABLE. - -Any ABI-changing feature is placed under it's own macro, _LIBCPP_ABI_XXX, which is enabled -based on the value of _LIBCPP_ABI_VERSION. _LIBCPP_ABI_UNSTABLE, if set, enables all features at once. Added: libcxx/trunk/docs/DesignDocs/ABIVersioning.rst URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/docs/DesignDocs/ABIVersioning.rst?rev=250261&view=auto ============================================================================== --- libcxx/trunk/docs/DesignDocs/ABIVersioning.rst (added) +++ libcxx/trunk/docs/DesignDocs/ABIVersioning.rst Tue Oct 13 19:22:05 2015 @@ -0,0 +1,17 @@ + +==================== +Libc++ ABI stability +==================== + +Libc++ aims to preserve stable ABI to avoid subtle bugs when code built to the old ABI +is linked with the code build to the new ABI. At the same time, libc++ allows ABI-breaking +improvements and bugfixes for the scenarios when ABI change is not a issue. + +To support both cases, libc++ allows specifying the ABI version at the +build time. The version is defined with a cmake option +LIBCXX_ABI_VERSION. Another option LIBCXX_ABI_UNSTABLE can be used to +include all present ABI breaking features. These options translate +into C++ macro definitions _LIBCPP_ABI_VERSION, _LIBCPP_ABI_UNSTABLE. + +Any ABI-changing feature is placed under it's own macro, _LIBCPP_ABI_XXX, which is enabled +based on the value of _LIBCPP_ABI_VERSION. _LIBCPP_ABI_UNSTABLE, if set, enables all features at once. Modified: libcxx/trunk/docs/index.rst URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/docs/index.rst?rev=250261&r1=250260&r2=250261&view=diff ============================================================================== --- libcxx/trunk/docs/index.rst (original) +++ libcxx/trunk/docs/index.rst Tue Oct 13 19:22:05 2015 @@ -128,6 +128,7 @@ Design Documents :maxdepth: 1 DesignDocs/CapturingConfigInfo + DesignDocs/ABIVersioning * `<atomic> design <http://libcxx.llvm.org/atomic_design.html>`_ Modified: libcxx/trunk/test/libcxx/test/config.py URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/config.py?rev=250261&r1=250260&r2=250261&view=diff ============================================================================== --- libcxx/trunk/test/libcxx/test/config.py (original) +++ libcxx/trunk/test/libcxx/test/config.py Tue Oct 13 19:22:05 2015 @@ -444,7 +444,9 @@ class Configuration(object): def configure_compile_flags_abi_version(self): abi_version = self.get_lit_conf('abi_version', '').strip() abi_unstable = self.get_lit_bool('abi_unstable') - if abi_version: + # Only add the ABI version when it is non-default. + # FIXME(EricWF): Get the ABI version from the "__config_site". + if abi_version and abi_version != '1': self.cxx.compile_flags += ['-D_LIBCPP_ABI_VERSION=' + abi_version] if abi_unstable: self.config.available_features.add('libcpp-abi-unstable') _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits