[cfe-dev] llvm/clang 3.0 on powerpc-darwin8

David Fang fang at csl.cornell.edu
Tue Dec 13 11:44:18 PST 2011


Greetings clangsters,

I've recently been porting llvm/clang 3.0 (release) to powerpc-darwin8 for 
fink, and have made good progress.  I would really like to get this port 
working, including libc++, and can use some help.

I've taken Jack Howarth's fink package submission and tweaked it for 
darwin8. Since the original packaging uses the cmake build system, I've 
also kept that the same (though I prefer and am better-versed in 
autoconf).

Since g++-4.0.1 isn't supported, I've chosen to bootstrap llvm/clang with 
gcc-4.6.2.

Package file (builds from source):
http://fink.cvs.sf.net/viewvc/fink/experimental/fangism/finkinfo/llvm30.info?view=log
Currently at rev. 1.8 at the time of writing this.

my cmake parameters:
-DLLVM_BUILD_32_BITS:BOOL=ON
-DLLVM_TARGETS_TO_BUILD=PowerPC
-DBUILD_SHARED_LIBS:BOOL=ON
-DCMAKE_C_FLAGS=-fno-common 
-DCMAKE_CXX_FLAGS=-fno-common

I wanted to build with shared libraries b/c an older build of llvm-2.9 
produced some massive static executables.  During early builds, I found 
that many (but not all) objects were compiled with -fPIC but missing 
-fno-common (needed on darwin linker).  My cmake-fu is weak, so I just 
passed -fno-common to the entire build.

The packaging file above contains a bunch of patch-work to get the build 
to cooperate.  Some cmake files were missing dependencies (undefined 
references) among shared libraries, and I worked around a circular 
dependence by lumping clangSerialization into clangFrontend [bug 11512]. 
find-cycles.pl found some other circular deps after everything built [bug 
11527], but I just ignored it for now.

The patching is in the form of sed-1-liners, but would anyone be 
interested in a unidiff-patch?  I'm happy to share these, but I don't know 
whether my patches are "correct" beyond "works for me".

At installation time (InstallScript of .info), I 'fixed' the dylibs and 
binaries to use references to their installed locations using 
install_name_tool.  (I've never had any luck with getting cmake to do this 
correctly and automatically, whereas libtool does the right thing.)  The 
resulting installed clang/llvm binaries run properly.

Test results (llvm+clang).
http://paste.lisp.org/display/126363#3
   Expected Passes    : 6508
   Expected Failures  : 36
   Unsupported Tests  : 2955
   Unexpected Passes  : 1
   Unexpected Failures: 77

How can I prepare a summary report of the failing and passing clang/llvm 
tests (is there a make target)?  and where is a good place to report the 
results for further scrutiny?  I've found an llvm-testresults mailing 
lists but those look like benchmark results.

======= libc++abi, libc++ =======

To make clang++ more use
I haven't found much documentation for these other than:
http://libcxx.llvm.org/
http://libcxxabi.llvm.org/

Are there any official versioned releases of these libraries? I'd like to 
put proper library version numbers to these, besides the svn revision 
numbers.

libcxxabi provides no Makefile, so I just improvised my own. Which 
compiler should I be building this with? It references some c++ stdandard 
library headers, but without libc++, the only ones available are the 
system /usr/include/c++/4.0.0 and gcc-4.6's. One of the source files uses 
the __has_feature() clang feature, so it's not clear to me.

I also plan to install libcxxabi outside of /usr/include, so I'll expect 
to patch libc++'s "lib/buildit" script.

My first attempts to compile libc++ resulted in some assembly errors, so 
I'll follow up with those later, maybe after going over clang's test 
failures.



Fang

-- 
David Fang
http://www.csl.cornell.edu/~fang/




More information about the cfe-dev mailing list