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

Kevin Ushey via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 22 16:28:03 PDT 2016


On Thu, Sep 22, 2016 at 4:13 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:

>
> 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 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 I follow these steps, I can usually build clang on MacOS with just
> `cmake path/to/llvm && make`
>

It looks like the issue was ultimately me just missing the command line
tools (and, with that, the headers it installs into `/usr/include`).
Although I do wonder how I might configure clang on build to use a
particular (set of) directories for the default header include paths.
(Unless there's a good reason why I shouldn't be doing this?)


>
>
> 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?
>

I followed the instructions here related to building on MacOSX with CMake:

http://lldb.llvm.org/build.html#BuildingLldbOnMacOSX

In other words, checking out the lldb sources in the 'projects' subfolder,
and letting the build system handle the rest when building everything.


>> 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
> 2f1019880e3fca33b8c7ac8f8bd272e546d930ac) (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/79f4a9d4/attachment.html>


More information about the cfe-dev mailing list