For example, given a "CoreFoundation Tool" target (and the default main.c that Xcode creates), you can do:
$ export PATH=/Volumes/HD/ltmp/ssen/src/llvm/Debug/bin:$PATH $ export CCC=/Volumes/HD/ltmp/ssen/src/llvm/tools/clang/utils/ccc $ rm -rf build $ xcodebuild CC=$CCC LD=$CCC=== BUILDING NATIVE TARGET foo WITH THE DEFAULT CONFIGURATION (Release) ===Checking Dependencies...CompileC build/foo.build/Release/foo.build/Objects-normal/i386/ main.o /tmp/foo/main.c normal i386 c com.apple.compilers.gcc.4_0cd /tmp/foo/Volumes/HD/ltmp/ssen/src/llvm/tools/clang/utils/ccc -x c -arch i386 -pipe -Wno-trigraphs -fpascal-strings -fasm-blocks -Os - mdynamic-no-pic -Wreturn-type -Wunused-variable -fmessage-length=0 - fvisibility=hidden -mmacosx-version-min=10.5 -gdwarf-2 -I/tmp/foo/ build/foo.build/Release/foo.build/foo.hmap -F/tmp/foo/build/Release - I/tmp/foo/build/Release/include -I/tmp/foo/build/foo.build/Release/ foo.build/DerivedSources -c /tmp/foo/main.c -o /tmp/foo/build/ foo.build/Release/foo.build/Objects-normal/i386/main.o clang -emit-llvm-bc -x c -o /tmp/foo/build/foo.build/Release/ foo.build/Objects-normal/i386/main.o /tmp/foo/main.c -I/tmp/foo/ build/foo.build/Release/foo.build/foo.hmap -F/tmp/foo/build/Release - I/tmp/foo/build/Release/include -I/tmp/foo/build/foo.build/Release/ foo.build/DerivedSourcesLd /tmp/foo/build/Release/foo normal i386 mkdir /tmp/foo/build/Release cd /tmp/foo/Volumes/HD/ltmp/ssen/src/llvm/tools/clang/utils/ccc -o /tmp/foo/ build/Release/foo -L/tmp/foo/build/Release -F/tmp/foo/build/Release - filelist /tmp/foo/build/foo.build/Release/foo.build/Objects-normal/ i386/foo.LinkFileList -framework CoreFoundation -arch i386 -mmacosx- version-min=10.5 llvm-ld -native -o /tmp/foo/build/Release/foo -L/tmp/foo/build/ Release -F/tmp/foo/build/Release -framework CoreFoundation /tmp/foo/ build/foo.build/Release/foo.build/Objects-normal/i386/main.oGenerateDSYMFile cd /tmp/foo/Developer/usr/bin/dsymutil -o /tmp/foo/build/Release/foo.dSYM / tmp/foo/build/Release/foowarning: no debug map in executable (-arch i386) ** BUILD SUCCEEDED ** $ ./build/Release/foo Hello, World! $
This patch builds on top of the following llvm/clang patches, so you will want up-to-date versions of both trees: <http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080121/057631.html > <http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080121/003943.html >
In addition, I added support for -save-temps in a manner similar to gcc, to aid with debugging some failures with -emit-llvm
$ mkdir -p obj
$ echo "int main() {}" > a.c
$ ccc -o obj/a a.c -save-temps
clang -E -x c -o a.i a.c
clang -emit-llvm-bc -x c-cpp-output -o a.o a.i
llvm-ld -native -o obj/a a.o
$ ls -l a* obj/*
-rw-r--r-- 1 shantonu wheel 14 Jan 27 20:29 a.c
-rw-r--r-- 1 shantonu wheel 69 Jan 27 20:29 a.i
-rw-r--r-- 1 shantonu wheel 412 Jan 27 20:29 a.o
-rwxr-xr-x 1 shantonu wheel 12564 Jan 27 20:29 obj/a*
-rwxr-xr-x 1 shantonu wheel 428 Jan 27 20:29 obj/a.bc*
ccc-savetemps-and-Xcode.patch
Description: Binary data
Shantonu Sen Apple Inc.
_______________________________________________ cfe-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
