[cfe-dev] [PATCH] Support building libc++ using an in-tree libc++abi

Russell Harmon eatnumber1 at google.com
Thu Jul 24 13:14:11 PDT 2014


Awesome! I'll change it up to implement your suggestions.

On Thu Jul 24 2014 at 11:42:12 AM, Dan Albert <danalbert at google.com> wrote:

> This has been a change I've been meaning to make for a while. I think a
> better approach would be to still use 'libcxxabi' for LIBCXX_CXX_ABI, but
> automatically use the headers in projects/libcxxabi/include in the case of
> an in-tree build. I might even go as far as saying that libcxxabi is the
> the default cxx abi for an in-tree build. As it is now, libc++ defaults to
> cxxabi=none, which means you can't run the tests iirc. As a side note,
> LIT_EXECUTABLE should also be picked up automatically for an in-tree build.
>
> https://github.com/llvm-mirror/libcxxabi/blob/master/CMakeLists.txt#L118
> shows how I tackled the reverse of this (automatically finding libc++
> headers for libc++abi). Essentially, take the first available of the user
> defined path, the in tree path, or the system headers
> (the ${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBCXX_INCLUDES} bit is to ensure
> that the user provided path works as an abspath or a relative path).
>
>
> On Thu, Jul 24, 2014 at 11:09 AM, <eatnumber1 at google.com> wrote:
>
>> From: Russell Harmon <eatnumber1 at google.com>
>>
>> This adds a new LIBCXX_CXX_ABI called "libcxxabi-in-tree", which will add
>> "${CMAKE_SOURCE_DIR}/projects/libcxxabi/include" to
>> LIBCXX_LIBCXXABI_INCLUDE_PATHS and will add "cxxabi" as a proper
>> dependency.
>> ---
>>  CMakeLists.txt | 8 +++++++-
>>  1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/CMakeLists.txt b/CMakeLists.txt
>> index c20e5d1..fd3e808 100644
>> --- a/CMakeLists.txt
>> +++ b/CMakeLists.txt
>> @@ -44,7 +44,7 @@ option(LIBCXX_ENABLE_CXX0X "Enable -std=c++0x and use
>> of c++0x language features
>>  option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON)
>>  option(LIBCXX_INSTALL_SUPPORT_HEADERS "Install libc++ support headers."
>> ON)
>>
>> -set(CXXABIS none libcxxabi libcxxrt libstdc++ libsupc++)
>> +set(CXXABIS none libcxxabi libcxxrt libstdc++ libsupc++
>> libcxxabi-in-tree)
>>  if (NOT DEFINED LIBCXX_CXX_ABI)
>>    set(LIBCXX_CXX_ABI "none")
>>  endif()
>> @@ -149,6 +149,12 @@ elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxabi")
>>    setup_abi_lib("LIBCXX_LIBCXXABI_INCLUDE_PATHS" ""
>>      "c++abi" "cxxabi.h" ""
>>      )
>> +elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxabi-in-tree")
>> +  set(LIBCXX_LIBCXXABI_INCLUDE_PATHS "${CMAKE_SOURCE_DIR}/projects/
>> libcxxabi/include")
>> +  setup_abi_lib("LIBCXX_LIBCXXABI_INCLUDE_PATHS" ""
>> +    "cxxabi" "cxxabi.h" ""
>> +    )
>> +  add_dependencies(LIBCXX_CXX_ABI_DEPS cxxabi)
>>  elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxrt")
>>    setup_abi_lib("LIBCXX_LIBCXXRT_INCLUDE_PATHS" "-DLIBCXXRT"
>>      "cxxrt" "cxxabi.h;unwind.h;unwind-arm.h;unwind-itanium.h" ""
>>
> --
>> 2.0.0.526.g5318336
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140724/dba1c351/attachment.html>


More information about the cfe-dev mailing list