[LLVMdev] How to run LLVM3.6.1 on OS X (Yosemite, Xcode6.4) OR how to link bitcode generated by OS X clang with LLVM3.6.1
Christian Schafmeister
chris.schaf at verizon.net
Tue Jul 7 17:14:08 PDT 2015
Thank you. I found a partial answer to the problem (1), namely “how to run Clang compiled with LLVM3.6.1 on OS X Yosemite/Xcode6.4"
It’s a combination of -isysroot and -resource-dir
I’m using these compiler options:
"/Users/meister/Development/externals-clasp/build/release/bin/clang" -v \
-resource-dir "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/6.1.0" \
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk \
…
I say partial answer because when I try to compile all of my C++ source files some headers are still not found. But the one source file that I need to compile to generate llvm bitcode now works.
The search paths that are searched with these options are:
../../include
../../src
../../src/llvmo
/Users/meister/Development/externals-clasp/build/common/include
/Users/meister/Development/externals-clasp/build/release/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/6.1.0/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks (framework directory)
End of search list.
When I compile with /usr/bin/clang -v it reports these search paths:
../../include
../../src
../../src/llvmo
/Users/meister/Development/externals-clasp/build/common/include
/Users/meister/Development/externals-clasp/build/release/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.1.0/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks (framework directory)
End of search list.
Which are essentially the same except /usr/bin/clang also searches: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
> On Jul 5, 2015, at 9:01 AM, Tim Northover <t.p.northover at gmail.com> wrote:
>
>> If anyone has suggestions on how to do one of the following - I would greatly appreciate it.
>> 1) Running clang built using LLVM3.6.1 (or higher) on OS X doesn’t work because it doesn’t find system header files.
>> I’ve added "-resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/6.1.0” to the command line and while versions of this path have worked in the past - it doesn’t work anymore.
>
> Resource-dir specifies the compiler's really, really internal support
> bits. It definitely has to match the compiler being used rather than
> the one provided with Xcode. What you probably want to play with
> instead is -isysroot, though an OSS clang may or may not be able to
> interpret those headers at any given point in time.
Do you know what you would set “-isysroot” to on OS X to get clang3.6.1 to run on OS X?
>
>> I always thought that this was just a warning but now that I look at the resulting bitcode file after linking I see that no inlining of the functions in intrinsics_bitcode_boehm.o (this is a bitcode file and not a .o file as the extension suggests) is taking place.
>
> They look like reasonably harmless warnings to me too. The true test
> of whether it's worked is going to be whether the output file runs
> correctly though, rather than whether LLVM decided any particular
> optimisation was profitable.
>
> I assume you're running optimisation passes after linking the two
> modules together? Perhaps try looking into the inliner to see why it's
> decided not to do that one.
>
> Cheers.
>
> Tim.
More information about the llvm-dev
mailing list