[cfe-dev] Building clang + LLVM on macOS Sierra

Kevin Ushey via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 22 11:42:46 PDT 2016

Hi everyone,

This is my first post here on cfe, so please be kind -- I apologize if some
of these issues have already been discussed previously on the list. I'm
building clang + LLVM mostly following the instructions at
http://clang.llvm.org/get_started.html and http://llvm.org/docs/CMake.html.
The goal is for me to be able to produce a clang installation that I can
use and play with locally on my MBP.

When building LLVM + clang, I had to manually add the include paths for
Valgrind, libxml2, and Python (currently just using -DCMAKE_C_FLAGS and
-DCMAKE_CXX_FLAGS when invoking cmake for configuration). Is this intended,
or should the cmake scripts be able to automatically discover these
dependencies? (I believe the header include errors occurred when attempting
to compile lldb).

After making these changes, an installation of clang is produced, but it
does not seem to know about the standard library headers -- e.g.
compilation fails when attempting to include <stdio.h>. (Note that this
build was produced with 'libcxx' available in the 'llvm/projects'
subdirectory). This did seem to work automagically when building with
clang-3.9; has anything changed here? Is there some option I can set that
says "please install + use the version of libc++ in the projects directory
by default"? For reference:

$ clang-4.0 -E - -v < /dev/null
clang version 4.0.0 (http://llvm.org/git/clang.git
2f1019880e3fca33b8c7ac8f8bd272e546d930ac) (http://llvm.org/git/llvm.git
Target: x86_64-apple-darwin16.0.0
Thread model: posix
InstalledDir: /usr/local/bin
 "/usr/local/llvm/bin/clang-4.0" -cc1 -triple x86_64-apple-macosx10.12.0
-Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -E
-disable-free -disable-llvm-verifier -discard-value-names -main-file-name -
-mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim
-masm-verbose -munwind-tables -target-cpu core2 -target-linker-version
274.1 -v -dwarf-column-info -debugger-tuning=lldb -resource-dir
/usr/local/llvm/bin/../lib/clang/4.0.0 -fdebug-compilation-dir
/Users/kevin/scratch -ferror-limit 19 -fmessage-length 101 -stack-protector
1 -fblocks -fobjc-runtime=macosx-10.12.0 -fencode-extended-block-signature
-fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o - -x c
clang -cc1 version 4.0.0 based upon LLVM 4.0.0svn default target
ignoring nonexistent directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.

For reference, I am configuring LLVM from a build directory within the LLVM
project tree with:

cmake -G "Ninja" ..                                \
    -DCMAKE_C_COMPILER=/usr/bin/clang              \
    -DCMAKE_C_FLAGS="${INCLUDE_FLAGS}"             \
    -DCMAKE_CXX_COMPILER=/usr/bin/clang++          \
    -DCMAKE_CXX_FLAGS="${INCLUDE_FLAGS}"           \
    -DCMAKE_SHARED_LINKER_FLAGS="-L/usr/local/lib" \
    -DCMAKE_BUILD_TYPE=Release                     \
    -DLLVM_ENABLE_CXX1Y=Yes                        \

with INCLUDE_FLAGS set with the include paths as noted before.

As an aside, it would be _incredibly_ helpful if a 'one-button' shell
script for download, build and installation of LLVM + clang could be
provided in the documentation; that is, something users could play with and
tweak themselves. Or, perhaps, links to scripts used by existing projects
that need to build LLVM + clang themselves?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160922/3c6345d4/attachment.html>

More information about the cfe-dev mailing list