Hi Dan, Sorry for the late reply. May you send a new patch with file attachment? Thanks.
Logan On Tue, Jul 1, 2014 at 9:06 AM, Eric Fiselier <[email protected]> wrote: > Hi Daniel, > > I applied the patch and build libcxxabi with it on linux64 Ubuntu. > > A couple of notes and questions: > - It seems gmail bungled the patch for me. I had to manually fix it > (just an FYI) > - The cmake invocation in the documentation should have -D in front of > LIBCXXABI_LIBCXX_PATH. > - How does LIBCXXABI_LIBCXX_PATH work when you want to include an > installed version of the libc++ headers? (/include/<headers> vs > /include/c++/v1/<headers>) > > Eric > > > > On Sun, Jun 29, 2014 at 1:27 PM, Nico Weber <[email protected]> wrote: > >> +Nick and Logan >> >> I think this is a good start, and it'd be great if libcxxabi could be >> built like the rest of llvm :-) >> >> A few notes (note that I'm not terribly familiar with cmake); I don't >> think they all need to be addressed before landing this: >> * It'd be nice if LIBCXXABI_LIBCXX_PATH was set automatically when >> libcxxabi is in llvm/projects/libcxxabi and libcxx is in >> llvm/projects/libcxx >> * This doesn't include libUnwind yet >> * llvm's toplevel cmake only asks for cmake 2.8.8, this needs 2.8.11 (I >> guess this is for target_include_directories – I don't know if not using >> target_include_directories would make things much more complicated, and >> requiring a more recent cmake doesn't seem like a big deal but it'd be nice >> if all the llvm projects had similar requirements.) >> * It'd probably be good if this had the target_ mechanisms that >> compiler-rt's cmakefiles have, so that libcxxabi can be built for various >> targets >> * Eventually, some check- target for running tests too would be awesome >> * I'd have the docs recommend doing in-llvm-tree builds if that means >> that things Just Work with llvm's regular cmake build >> >> >> On Thu, Jun 26, 2014 at 11:45 PM, Dan Albert <[email protected]> >> wrote: >> >>> I've tested that this builds both in the tree and standalone on Linux >>> and OS X. >>> >>> >>> On Thu Jun 26 2014 at 11:43:25 PM, Dan Albert <[email protected]> >>> wrote: >>> >>>> No longer have to perform a full rebuild every time. This also makes >>>> building on Linux simpler, and allows building libcxxabi to be built >>>> from within the llvm tree (under projects/). >>>> >>>> This does not yet support building the unwinder in src/Unwind. That will >>>> be added in a later patch. Will also add support for tests with lit in a >>>> later patch. >>>> --- >>>> CMakeLists.txt | 214 ++++++++++++++++++++++++++++++ >>>> ++++++++++++++++++++ >>>> cmake/config-ix.cmake | 27 +++++++ >>>> src/CMakeLists.txt | 74 +++++++++++++++++ >>>> www/index.html | 10 +++ >>>> 4 files changed, 325 insertions(+) >>>> create mode 100644 CMakeLists.txt >>>> create mode 100644 cmake/config-ix.cmake >>>> create mode 100644 src/CMakeLists.txt >>>> >>>> diff --git a/CMakeLists.txt b/CMakeLists.txt >>>> new file mode 100644 >>>> index 0000000..26c4d91 >>>> --- /dev/null >>>> +++ b/CMakeLists.txt >>>> @@ -0,0 +1,214 @@ >>>> +#========================================================== >>>> ===================== >>>> +# Setup Project >>>> +#========================================================== >>>> ===================== >>>> + >>>> +cmake_minimum_required(VERSION 2.8.11) >>>> + >>>> +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) >>>> + project(libcxxabi) >>>> + >>>> + # Rely on llvm-config. >>>> + set(CONFIG_OUTPUT) >>>> + find_program(LLVM_CONFIG "llvm-config") >>>> + if(LLVM_CONFIG) >>>> + message(STATUS "Found LLVM_CONFIG as ${LLVM_CONFIG}") >>>> + set(CONFIG_COMMAND ${LLVM_CONFIG} >>>> + "--bindir" >>>> + "--libdir" >>>> + "--prefix" >>>> + "--src-root") >>>> + execute_process( >>>> + COMMAND ${CONFIG_COMMAND} >>>> + RESULT_VARIABLE HAD_ERROR >>>> + OUTPUT_VARIABLE CONFIG_OUTPUT >>>> + ) >>>> + if(NOT HAD_ERROR) >>>> + string(REGEX REPLACE >>>> + "[ \t]*[\r\n]+[ \t]*" ";" >>>> + CONFIG_OUTPUT ${CONFIG_OUTPUT}) >>>> + else() >>>> + string(REPLACE ";" " " CONFIG_COMMAND_STR "${CONFIG_COMMAND}") >>>> + message(STATUS "${CONFIG_COMMAND_STR}") >>>> + message(FATAL_ERROR "llvm-config failed with status >>>> ${HAD_ERROR}") >>>> + endif() >>>> + else() >>>> + message(FATAL_ERROR "llvm-config not found -- ${LLVM_CONFIG}") >>>> + endif() >>>> + >>>> + list(GET CONFIG_OUTPUT 0 TOOLS_BINARY_DIR) >>>> + list(GET CONFIG_OUTPUT 1 LIBRARY_DIR) >>>> + list(GET CONFIG_OUTPUT 2 LLVM_OBJ_ROOT) >>>> + list(GET CONFIG_OUTPUT 3 MAIN_SRC_DIR) >>>> + >>>> + set(LLVM_TOOLS_BINARY_DIR ${TOOLS_BINARY_DIR} CACHE PATH "Path to >>>> llvm/bin") >>>> + set(LLVM_LIBRARY_DIR ${LIBRARY_DIR} CACHE PATH "Path to llvm/lib") >>>> + set(LLVM_BINARY_DIR ${LLVM_OBJ_ROOT} CACHE PATH "Path to LLVM build >>>> tree") >>>> + set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH "Path to LLVM >>>> source tree") >>>> + >>>> + set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR}/share/llvm/cmake") >>>> + set(LLVMCONFIG_FILE "${LLVM_CMAKE_PATH}/LLVMConfig.cmake") >>>> + if(EXISTS ${LLVMCONFIG_FILE}) >>>> + list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}") >>>> + include(${LLVMCONFIG_FILE}) >>>> + else() >>>> + message(FATAL_ERROR "Not found: ${LLVMCONFIG_FILE}") >>>> + endif() >>>> + >>>> + set(PACKAGE_NAME libcxxabi) >>>> + set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}") >>>> + set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") >>>> + set(PACKAGE_BUGREPORT "[email protected]") >>>> + >>>> + if(EXISTS ${LLVM_MAIN_SRC_DIR}/utils/lit/lit.py) >>>> + set(LLVM_LIT ${LLVM_MAIN_SRC_DIR}/utils/lit/lit.py) >>>> + else() >>>> + # Seek installed Lit. >>>> + find_program(LLVM_LIT "lit.py" ${LLVM_MAIN_SRC_DIR}/utils/lit >>>> + DOC "Path to lit.py") >>>> + endif() >>>> + >>>> + if(LLVM_LIT) >>>> + # Define the default arguments to use with 'lit', and an option >>>> for the user >>>> + # to override. >>>> + set(LIT_ARGS_DEFAULT "-sv") >>>> + if (MSVC OR XCODE) >>>> + set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar") >>>> + endif() >>>> + set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default >>>> options for lit") >>>> + >>>> + # On Win32 hosts, provide an option to specify the path to the >>>> GnuWin32 tools. >>>> + if( WIN32 AND NOT CYGWIN ) >>>> + set(LLVM_LIT_TOOLS_DIR "" CACHE PATH "Path to GnuWin32 tools") >>>> + endif() >>>> + else() >>>> + set(LLVM_INCLUDE_TESTS OFF) >>>> + endif() >>>> + >>>> + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) >>>> + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) >>>> + >>>> + set(LIBCXXABI_BUILT_STANDALONE 1) >>>> +endif() >>>> + >>>> +#========================================================== >>>> ===================== >>>> +# Setup CMake Options >>>> +#========================================================== >>>> ===================== >>>> + >>>> +# Define options. >>>> +option(LIBCXXABI_ENABLE_RTTI "Use run time type information." ON) >>>> +option(LIBCXXABI_ENABLE_ASSERTIONS "Enable assertions independent of >>>> build mode." ON) >>>> +option(LIBCXXABI_ENABLE_PEDANTIC "Compile with pedantic enabled." ON) >>>> +option(LIBCXXABI_ENABLE_WERROR "Fail and stop if a warning is >>>> triggered." OFF) >>>> +option(LIBCXXABI_ENABLE_CXX11 "Enable -std=c++11 and use of c++11 >>>> language features if the compiler supports it." ON) >>>> +option(LIBCXXABI_ENABLE_SHARED "Build libc++abi as a shared library." >>>> ON) >>>> + >>>> +#========================================================== >>>> ===================== >>>> +# Configure System >>>> +#========================================================== >>>> ===================== >>>> + >>>> +# Add path for custom modules >>>> +set(CMAKE_MODULE_PATH >>>> + "${CMAKE_CURRENT_SOURCE_DIR}/cmake" >>>> + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" >>>> + ${CMAKE_MODULE_PATH} >>>> + ) >>>> + >>>> +# Configure compiler. >>>> +include(config-ix) >>>> + >>>> +#========================================================== >>>> ===================== >>>> +# Setup Compiler Flags >>>> +#========================================================== >>>> ===================== >>>> + >>>> +# Get required flags. >>>> +macro(append_if list condition var) >>>> + if (${condition}) >>>> + list(APPEND ${list} ${var}) >>>> + endif() >>>> +endmacro() >>>> + >>>> +if (LIBCXXABI_HAS_NOSTDINCXX_FLAG) >>>> + list(APPEND LIBCXXABI_CXX_REQUIRED_FLAGS -nostdinc++) >>>> +endif() >>>> +if (LIBCXXABI_ENABLE_CXX11 AND LIBCXXABI_HAS_STDCXX11_FLAG) >>>> + list(APPEND LIBCXXABI_CXX_REQUIRED_FLAGS -std=c++11) >>>> +endif() >>>> + >>>> +# Get warning flags >>>> +if (NOT MSVC) >>>> + append_if(LIBCXXABI_CXX_WARNING_FLAGS LIBCXXABI_HAS_WALL_FLAG -Wall) >>>> + append_if(LIBCXXABI_CXX_WARNING_FLAGS >>>> LIBCXXABI_HAS_WNO_UNUSED_FUNCTION_FLAG >>>> -Wno-unused-function) >>>> + list(APPEND LIBCXXABI_CXX_REQUIRED_FLAGS -Werror=return-type) >>>> +endif() >>>> + >>>> +append_if(LIBCXXABI_CXX_WARNING_FLAGS LIBCXXABI_HAS_W_FLAG -W) >>>> +append_if(LIBCXXABI_CXX_WARNING_FLAGS >>>> LIBCXXABI_HAS_WNO_UNUSED_PARAMETER_FLAG >>>> -Wno-unused-parameter) >>>> +append_if(LIBCXXABI_CXX_WARNING_FLAGS LIBCXXABI_HAS_WWRITE_STRINGS_FLAG >>>> -Wwrite-strings) >>>> +append_if(LIBCXXABI_CXX_WARNING_FLAGS LIBCXXABI_HAS_WNO_LONG_LONG_FLAG >>>> -Wno-long-long) >>>> +if (LIBCXXABI_ENABLE_WERROR) >>>> + append_if(LIBCXXABI_CXX_WARNING_FLAGS LIBCXXABI_HAS_WERROR_FLAG >>>> -Werror) >>>> + append_if(LIBCXXABI_CXX_WARNING_FLAGS LIBCXXABI_HAS_WX_FLAG -WX) >>>> +else() >>>> + append_if(LIBCXXABI_CXX_WARNING_FLAGS LIBCXXABI_HAS_WNO_ERROR_FLAG >>>> -Wno-error) >>>> + append_if(LIBCXXABI_CXX_WARNING_FLAGS LIBCXXABI_HAS_NO_WX_FLAG -WX-) >>>> +endif() >>>> +if (LIBCXXABI_ENABLE_PEDANTIC) >>>> + append_if(LIBCXXABI_CXX_WARNING_FLAGS LIBCXXABI_HAS_PEDANTIC_FLAG >>>> -pedantic) >>>> +endif() >>>> + >>>> +# Get feature flags. >>>> +# Exceptions >>>> +# Catches C++ exceptions only and tells the compiler to assume that >>>> extern C >>>> +# functions never throw a C++ exception. >>>> +append_if(LIBCXXABI_CXX_FEATURE_FLAGS LIBCXXABI_HAS_EHSC_FLAG -EHsc) >>>> +# RTTI >>>> +if (NOT LIBCXXABI_ENABLE_RTTI) >>>> + list(APPEND LIBCXXABI_CXX_FEATURE_FLAGS -D_LIBCPP_NO_RTTI) >>>> + append_if(LIBCXXABI_CXX_FEATURE_FLAGS LIBCXXABI_HAS_NO_GR_FLAG -GR-) >>>> + append_if(LIBCXXABI_CXX_FEATURE_FLAGS LIBCXXABI_HAS_FNO_RTTI_FLAG >>>> -fno-rtti) >>>> +endif() >>>> +# Assert >>>> +string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE) >>>> +if (LIBCXXABI_ENABLE_ASSERTIONS) >>>> + # MSVC doesn't like _DEBUG on release builds. See PR 4379. >>>> + if (NOT MSVC) >>>> + list(APPEND LIBCXXABI_CXX_FEATURE_FLAGS -D_DEBUG) >>>> + endif() >>>> + # On Release builds cmake automatically defines NDEBUG, so we >>>> + # explicitly undefine it: >>>> + if (uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE") >>>> + list(APPEND LIBCXXABI_CXX_FEATURE_FLAGS -UNDEBUG) >>>> + endif() >>>> +else() >>>> + if (NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE") >>>> + list(APPEND LIBCXXABI_CXX_FEATURE_FLAGS -DNDEBUG) >>>> + endif() >>>> +endif() >>>> +# Static library >>>> +if (NOT LIBCXXABI_ENABLE_SHARED) >>>> + list(APPEND LIBCXXABI_CXX_FEATURE_FLAGS -D_LIBCPP_BUILD_STATIC) >>>> +endif() >>>> + >>>> +# This is the _ONLY_ place where add_definitions is called. >>>> +if (MSVC) >>>> + add_definitions(-D_CRT_SECURE_NO_WARNINGS) >>>> +endif() >>>> + >>>> +string(REPLACE ";" " " LIBCXXABI_CXX_REQUIRED_FLAGS >>>> "${LIBCXXABI_CXX_REQUIRED_FLAGS}") >>>> +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBCXXABI_CXX_REQUIRED_ >>>> FLAGS}") >>>> + >>>> +string(REPLACE ";" " " LIBCXXABI_CXX_WARNING_FLAGS >>>> "${LIBCXXABI_CXX_WARNING_FLAGS}") >>>> +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBCXXABI_CXX_WARNING_FLAGS} >>>> ") >>>> + >>>> +string(REPLACE ";" " " LIBCXXABI_CXX_FEATURE_FLAGS >>>> "${LIBCXXABI_CXX_FEATURE_FLAGS}") >>>> +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBCXXABI_CXX_FEATURE_FLAGS} >>>> ") >>>> + >>>> +#========================================================== >>>> ===================== >>>> +# Setup Source Code >>>> +#========================================================== >>>> ===================== >>>> + >>>> +include_directories(include) >>>> + >>>> +# Add source code. This also contains all of the logic for deciding >>>> linker flags >>>> +# soname, etc... >>>> +add_subdirectory(src) >>>> diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake >>>> new file mode 100644 >>>> index 0000000..96da3f5 >>>> --- /dev/null >>>> +++ b/cmake/config-ix.cmake >>>> @@ -0,0 +1,27 @@ >>>> +include(CheckLibraryExists) >>>> +include(CheckCXXCompilerFlag) >>>> + >>>> +# Check compiler flags >>>> +check_cxx_compiler_flag(-std=c++11 >>>> LIBCXXABI_HAS_STDCXX11_FLAG) >>>> +check_cxx_compiler_flag(-fPIC LIBCXXABI_HAS_FPIC_FLAG) >>>> +check_cxx_compiler_flag(-nodefaultlibs >>>> LIBCXXABI_HAS_NODEFAULTLIBS_FLAG) >>>> +check_cxx_compiler_flag(-nostdinc++ >>>> LIBCXXABI_HAS_NOSTDINCXX_FLAG) >>>> +check_cxx_compiler_flag(-Wall LIBCXXABI_HAS_WALL_FLAG) >>>> +check_cxx_compiler_flag(-W LIBCXXABI_HAS_W_FLAG) >>>> +check_cxx_compiler_flag(-Wno-unused-function >>>> LIBCXXABI_HAS_WNO_UNUSED_FUNCTION_FLAG) >>>> +check_cxx_compiler_flag(-Wno-unused-parameter >>>> LIBCXXABI_HAS_WNO_UNUSED_PARAMETER_FLAG) >>>> +check_cxx_compiler_flag(-Wwrite-strings >>>> LIBCXXABI_HAS_WWRITE_STRINGS_FLAG) >>>> +check_cxx_compiler_flag(-Wno-long-long >>>> LIBCXXABI_HAS_WNO_LONG_LONG_FLAG) >>>> +check_cxx_compiler_flag(-pedantic >>>> LIBCXXABI_HAS_PEDANTIC_FLAG) >>>> +check_cxx_compiler_flag(-Werror >>>> LIBCXXABI_HAS_WERROR_FLAG) >>>> +check_cxx_compiler_flag(-Wno-error >>>> LIBCXXABI_HAS_WNO_ERROR_FLAG) >>>> +check_cxx_compiler_flag(-fno-rtti >>>> LIBCXXABI_HAS_FNO_RTTI_FLAG) >>>> +check_cxx_compiler_flag(/WX LIBCXXABI_HAS_WX_FLAG) >>>> +check_cxx_compiler_flag(/WX- LIBCXXABI_HAS_NO_WX_FLAG) >>>> +check_cxx_compiler_flag(/EHsc LIBCXXABI_HAS_EHSC_FLAG) >>>> +check_cxx_compiler_flag(/EHs- >>>> LIBCXXABI_HAS_NO_EHS_FLAG) >>>> +check_cxx_compiler_flag(/EHa- >>>> LIBCXXABI_HAS_NO_EHA_FLAG) >>>> +check_cxx_compiler_flag(/GR- LIBCXXABI_HAS_NO_GR_FLAG) >>>> + >>>> +# Check libraries >>>> +check_library_exists(c printf "" LIBCXXABI_HAS_C_LIB) >>>> diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt >>>> new file mode 100644 >>>> index 0000000..416f433 >>>> --- /dev/null >>>> +++ b/src/CMakeLists.txt >>>> @@ -0,0 +1,74 @@ >>>> +# Get sources >>>> +file(GLOB LIBCXXABI_SOURCES *.cpp) >>>> + >>>> +# Add all the headers to the project for IDEs. >>>> +if (MSVC_IDE OR XCODE) >>>> + file(GLOB_RECURSE LIBCXXABI_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/.. >>>> /include/*) >>>> + # Force them all into the headers dir on MSVC, otherwise they end up >>>> at >>>> + # project scope because they don't have extensions. >>>> + if (MSVC_IDE) >>>> + source_group("Header Files" FILES ${LIBCXXABI_HEADERS}) >>>> + endif() >>>> +endif() >>>> + >>>> +if (LIBCXXABI_ENABLE_SHARED) >>>> + add_library(cxxabi SHARED >>>> + ${LIBCXXABI_SOURCES} >>>> + ${LIBCXXABI_HEADERS} >>>> + ) >>>> +else() >>>> + add_library(cxxabi STATIC >>>> + ${LIBCXXABI_SOURCES} >>>> + ${LIBCXXABI_HEADERS} >>>> + ) >>>> +endif() >>>> + >>>> +if (LIBCXXABI_LIBCXX_PATH) >>>> + target_include_directories(cxxabi PRIVATE "${LIBCXXABI_LIBCXX_PATH}/ >>>> include") >>>> +elseif (NOT LIBCXXABI_BUILT_STANDALONE) >>>> + target_include_directories(cxxabi PRIVATE >>>> + "${LLVM_MAIN_SRC_DIR}/ >>>> projects/libcxx/include") >>>> +elseif (NOT APPLE) >>>> + message(FATAL_ERROR "LIBCXXABI_LIBCXX_PATH is not set.") >>>> +endif() >>>> + >>>> +# Generate library list. >>>> +set(libraries ${LIBCXXABI_CXX_ABI_LIBRARIES}) >>>> +append_if(libraries LIBCXXABI_HAS_C_LIB c) >>>> + >>>> +target_link_libraries(cxxabi ${libraries}) >>>> + >>>> +# Setup flags. >>>> +append_if(compile_flags LIBCXXABI_HAS_FPIC_FLAG -fPIC) >>>> +append_if(link_flags LIBCXXABI_HAS_NODEFAULTLIBS_FLAG -nodefaultlibs) >>>> + >>>> +if ( APPLE ) >>>> + if ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" ) >>>> + list(APPEND compile_flags "-U__STRICT_ANSI__") >>>> + list(APPEND link_flags >>>> + "-compatibility_version 1" >>>> + "-current_version ${LIBCXXABI_VERSION}" >>>> + "-install_name /usr/lib/libc++abi.1.dylib" >>>> + "/usr/lib/libSystem.B.dylib") >>>> + else() >>>> + list(APPEND link_flags >>>> + "-compatibility_version 1" >>>> + "-install_name /usr/lib/libc++abi.1.dylib") >>>> + endif() >>>> +endif() >>>> + >>>> +string(REPLACE ";" " " link_flags "${link_flags}") >>>> + >>>> +set_target_properties(cxxabi >>>> + PROPERTIES >>>> + COMPILE_FLAGS "${compile_flags}" >>>> + LINK_FLAGS "${link_flags}" >>>> + OUTPUT_NAME "c++abi" >>>> + VERSION "1.0" >>>> + SOVERSION "1" >>>> + ) >>>> + >>>> +install(TARGETS cxxabi >>>> + LIBRARY DESTINATION lib >>>> + ARCHIVE DESTINATION lib >>>> + ) >>>> diff --git a/www/index.html b/www/index.html >>>> index a174afd..4960b95 100644 >>>> --- a/www/index.html >>>> +++ b/www/index.html >>>> @@ -79,6 +79,16 @@ >>>> <li><code>svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk >>>> libcxxabi</code></li> >>>> </ul> >>>> >>>> + <p>To build on Linux:</p> >>>> + <ul> >>>> + <li><code>cd libcxxabi</code></li> >>>> + <li><code>mkdir build && cd build</code></li> >>>> + <li><code>CC=clang CXX=clang++ cmake >>>> LIBCXXABI_LIBCXX_PATH=path/to/libcxx >>>> ..</code></li> >>>> + <li><code>make</code></li> >>>> + </ul> >>>> + >>>> + <p>You can also checkout libcxxabi to llvm/projects to build in >>>> tree.<p> >>>> + >>>> <p>Send discussions to the >>>> (<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">clang >>>> mailing list</a>).</p> >>>> >>>> -- >>>> 2.0.0.526.g5318336 >>>> >>>> >>> _______________________________________________ >>> cfe-commits mailing list >>> [email protected] >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >>> >>> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> >> >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
