Because of: http://llvm.org/bugs/show_bug.cgi?id=15182
I am asking for a review of the CMake building instructions on the libcxx website: http://libcxx.llvm.org I have no clue if our website is right or wrong. I just want somebody in the know to double check. Thanks much. Howard On Dec 31, 2012, at 2:34 PM, Michael J. Spencer <[email protected]> wrote: > Author: mspencer > Date: Mon Dec 31 13:34:21 2012 > New Revision: 171316 > > URL: http://llvm.org/viewvc/llvm-project?rev=171316&view=rev > Log: > [CMake] Fix c++ abi library configuration on Linux. > > You can now configure from the command line using: > -DLIBCXX_CXX_ABI=libsupc++ > -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="path;path > > Also documents how to build on Linux. > > Modified: > libcxx/trunk/CMakeLists.txt > libcxx/trunk/lib/CMakeLists.txt > libcxx/trunk/www/index.html > > Modified: libcxx/trunk/CMakeLists.txt > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/CMakeLists.txt?rev=171316&r1=171315&r2=171316&view=diff > ============================================================================== > --- libcxx/trunk/CMakeLists.txt (original) > +++ libcxx/trunk/CMakeLists.txt Mon Dec 31 13:34:21 2012 > @@ -40,6 +40,9 @@ > option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON) > > set(CXXABIS none libcxxabi libcxxrt libsupc++) > +if (NOT DEFINED LIBCXX_CXX_ABI) > + set(LIBCXX_CXX_ABI "none") > +endif() > set(LIBCXX_CXX_ABI "${LIBCXX_CXX_ABI}" CACHE STRING > "Specify C++ ABI library to use." FORCE) > set_property(CACHE LIBCXX_CXX_ABI PROPERTY STRINGS "";${CXXABIS}) > @@ -63,9 +66,10 @@ > ) > set(LIBCXX_TARGET_TRIPLE ${LIBCXX_TARGET_TRIPLE} CACHE STRING "Target > triple.") > > -if (${LIBCXX_CXX_ABI} STREQUAL "libsupc++") > - set(LIBCXX_LIBSUPCXX_INCLUDE_PATHS "" CACHE STRINGS > - "Paths to libsupc++ include directories. Separate by system separator") > +if ("${LIBCXX_CXX_ABI}" STREQUAL "libsupc++") > + set(LIBCXX_LIBSUPCXX_INCLUDE_PATHS "${LIBCXX_LIBSUPCXX_INCLUDE_PATHS}" > + CACHE STRINGS > + "Paths to libsupc++ include directories separate by ';'.") > set(LIBCXX_CXX_ABI_LIBRARIES stdc++) > set(LIBCXX_LIBSUPCXX_FILES > cxxabi.h > @@ -75,6 +79,9 @@ > bits/cxxabi_tweaks.h > bits/cxxabi_forced.h > ) > + # Create include directories. > + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include") > + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include/bits") > set(LIBCXX_LIBSUPCXX_FILE_PATHS) > foreach(path ${LIBCXX_LIBSUPCXX_FILES}) > set(found FALSE) > @@ -106,7 +113,7 @@ > FILES_MATCHING > PATTERN "*" > ) > -elseif (${LIBCXX_CXX_ABI} NOT STREQUAL "none") > +elseif (NOT "${LIBCXX_CXX_ABI}" STREQUAL "none") > message(FATAL_ERROR > "Currently only none and libsupc++ are supported for c++ abi.") > endif () > > Modified: libcxx/trunk/lib/CMakeLists.txt > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/lib/CMakeLists.txt?rev=171316&r1=171315&r2=171316&view=diff > ============================================================================== > --- libcxx/trunk/lib/CMakeLists.txt (original) > +++ libcxx/trunk/lib/CMakeLists.txt Mon Dec 31 13:34:21 2012 > @@ -31,7 +31,9 @@ > ) > endif() > > -add_dependencies(cxx ${LIBCXX_CXX_ABI_DEPS}) > +if (DEFINED LIBCXX_CXX_ABI_DEPS) > + add_dependencies(cxx ${LIBCXX_CXX_ABI_DEPS}) > +endif() > > # Generate library list. > set(libraries ${LIBCXX_CXX_ABI_LIBRARIES}) > > Modified: libcxx/trunk/www/index.html > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/index.html?rev=171316&r1=171315&r2=171316&view=diff > ============================================================================== > --- libcxx/trunk/www/index.html (original) > +++ libcxx/trunk/www/index.html Mon Dec 31 13:34:21 2012 > @@ -116,6 +116,7 @@ > <!--=====================================================================--> > > <p>libc++ is a 100% complete C++11 implementation on Apple's OS X. </p> > + <p>LLVM and Clang can self host in C++ and C++11 mode with libc++ on > Linux.</p> > > <p> > Ports to other platforms are underway. Here are recent test > @@ -205,6 +206,60 @@ > (<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">clang mailing > list</a>).</p> > > <!--=====================================================================--> > + <h2>Build on Linux using CMake and libsupc++.</h2> > + > <!--=====================================================================--> > + > + <p> > + You will need libstdc++ in order to provide libsupc++. > + </p> > + > + <p> > + Figure out where the libsupc++ headers are on your system. On Ubuntu > this > + is <code>/usr/include/c++/<version></code> and > + <code>/usr/include/c++/<version>/<target-triple></code> > + </p> > + > + <p> > + You can also figure this out by running > + <pre> > +$ echo | g++ -Wp,-v -x c++ - -fsyntax-only > +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" > +ignoring nonexistent directory > "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include" > +#include "..." search starts here: > +#include <...> search starts here: > + /usr/include/c++/4.7 > + /usr/include/c++/4.7/x86_64-linux-gnu > + /usr/include/c++/4.7/backward > + /usr/lib/gcc/x86_64-linux-gnu/4.7/include > + /usr/local/include > + /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed > + /usr/include/x86_64-linux-gnu > + /usr/include > +End of search list. > + </pre> > + > + Note the first two entries happen to be what we are looking for. This > + may not be correct on other platforms. > + </p> > + > + <p> > + We can now run CMake: > + <ul> > + <li><code>CC=clang CXX=clang++ cmake -G "Unix Makefiles" > + -DLIBCXX_CXX_ABI=libsupc++ > + > -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="/usr/include/c++/4.7/;/usr/include/c++/4.7/x86_64-linux-gnu/" > + -DCMAKE_BUILD_TYPE=Release > + -DCMAKE_INSTALL_PREFIX=/usr > + <libc++-source-dir></code></li> > + <li><code>make</code></li> > + <li><code>sudo make install</code></li> > + </ul> > + <p> > + You can now run clang with -stdlib=libc++. > + </p> > + </p> > + > + > <!--=====================================================================--> > <h2>Design Documents</h2> > <!--=====================================================================--> > > > > _______________________________________________ > 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
