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

Russell Harmon eatnumber1 at google.com
Thu Jul 24 14:43:53 PDT 2014


It looks like LIT_EXECUTABLE will already be set correctly. See
https://github.com/llvm-mirror/libcxx/blob/master/test/CMakeLists.txt#L14
which depends on LIBCXX_BUILT_STANDALONE not being set, which it won't via
the check in
https://github.com/llvm-mirror/libcxx/blob/master/CMakeLists.txt#L29

On Thu Jul 24 2014 at 1:14:12 PM, Russell Harmon <eatnumber1 at google.com>
wrote:

> 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/f773c310/attachment.html>


More information about the cfe-dev mailing list