[cfe-dev] Build system not picking up libc++?

Jeffrey Walton noloader at gmail.com
Sat Jan 10 17:19:33 PST 2015


TLDR:

I'm fetching packages from http://llvm.org/releases/download.html.

Unpacking libcxx, placing it llvm/projects and running configure does
not pickup libc++. That is, 'make' does not build libc++. How do I
integrate libc++ into the build process?

Manually running 'make cxx' per http://libcxx.llvm.org/ does not work.
There is no 'cxx' target. That's from both the top level llvm
directory and the llvm/projects/libcxx directory. Why does it not
work? (I know its kind of a broad question, but I don't know how to
start zeroing-in what's wrong).

The llvm/projects/libcxx/Makefile does not have build rules (only
install rules). The LLVM projects support both Make and Cmake
(http://llvm.org/docs/LLVMBuild.html). I don't use Cmake, and I'm
using the Make based gear. What makefile should I be using?

Trying to specify the packages with --with-libcxx --with-libcxxabi to
configure does not work. What are the package names? How do I specify
the packages so they are included during build?

-----

I have a recipe that builds LLVM, Compiler Front End (Clang), Compiler
RT and Extra tools. It works fine. I am trying to add libc++ to the
process because my Clang 3.5.0 install is having troubles on OX S 10.9
and 10.10 (it can't find C++ headers or libraries) (OS X 10.7 and 10.8
are OK).

I downloaded libcxx-3.5.0.src.tar.xz from
http://llvm.org/releases/3.5.0/libcxx-3.5.0.src.tar.xz. I unpacked it,
and moved it to llvm/projects/libcxx (so its where the build system
expects it per http://libcxx.llvm.org/).

I then configure with the following command (this is the same
configure that works without libc++):

    # 'build' is next to 'llvm', and its the staging directory
    mkdir -p build
    cd build
    ../llvm/configure --enable-optimized --disable-assertions --enable-cxx11 \
        $OTHER_OPTIONS --prefix=$(PREFIX)

OTHER_OPTIONS is --enable-libcpp on OS X; and PREFIX is /usr/local.

After configure and make, libc++ is not built. Performing a `find llvm
-iname libc++*` reveals no artifacts, like `libc++.a or libc++.dylib.
(It does find pre-existing files, like libc++abi.exp and
libc++abi2.exp from llvm/projects/libcxx/lib/).

----------

I cannot run `make cxx` from the 'build' directory per
http://libcxx.llvm.org/. And manually running libc++'s make:

    cd clang-scratch
    mkdir -p build
    DSTROOT=build; make -f llvm/projects/libcxx/Makefile

Results in:

    Use make install DSTROOT=<destination>

Its as if the library was not even configured (it only has an install recipe).

----------

I tried adding packages to the configure line:

    ../llvm/configure --enable-optimized --disable-assertions --enable-cxx11 \
        --with-libcxx --with-libcxxabi $OTHER_OPTIONS --prefix=$(PREFIX)

But that results in:

    configure: WARNING: Unknown project (libcxx) won't be configured
automatically
    configure: WARNING: Unknown project (libcxxabi) won't be
configured automatically

----------

A lot of this was already asked at "Questions about libc++ for linux
and its git repository (if any)",
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-July/thread.html
(scroll down about 3/5'ths of the page). But most of the questions
went unanswered.



More information about the cfe-dev mailing list