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

Mehdi Amini via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 22 16:13:56 PDT 2016


> On Sep 22, 2016, at 11:42 AM, Kevin Ushey via cfe-dev <cfe-dev at lists.llvm.org> wrote:
> 
> 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 <http://clang.llvm.org/get_started.html> and http://llvm.org/docs/CMake.html <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 I follow these steps, I can usually build clang on MacOS with just `cmake path/to/llvm && make`


> 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).

The getting started page you linker does not mention lldb, how did you ended up building it?

— 
Mehdi


> 
> 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 <http://llvm.org/git/clang.git> 2f1019880e3fca33b8c7ac8f8bd272e546d930ac) (http://llvm.org/git/llvm.git <http://llvm.org/git/llvm.git> 20bb0322fd381dd7e265eaa05b7fb1c292278abe)
> 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 x86_64-apple-darwin16.0.0
> ignoring nonexistent directory "/usr/include"
> #include "..." search starts here:
> #include <...> search starts here:
>  /usr/local/include
>  /usr/local/llvm/bin/../lib/clang/4.0.0/include
>  /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                     \
>     -DCMAKE_INSTALL_PREFIX="${LLVM_INSTALL_DIR}"   \
>     -DLLVM_ENABLE_CXX1Y=Yes                        \
>     -DLLVM_ENABLE_LTO=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?
> 
> Thanks,
> Kevin
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

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


More information about the cfe-dev mailing list