fink llvm-gcc42 test packaging

I've created fink packaging for a building the llvm
and llvm-gcc-4.2 svn pulls under fink on Mac OS X. Hopefully
the fink info script and patch should be clear enough for
some comments on my build approach. The llvm-gcc and llvm-g++
compilers seem okay so far. The llvm-gfortran compiler seems to
always spew a warning..

WARNING: 128-bit integers not supported!

...even when just compiling a simple helloworld program
with a single print statement. I haven't done a complete
make check-gfortran yet but a partial run looked to be
failing about half of the testsuite. Here is the info
and patch file I am using in fink.
            Jack
ps I assume I am supposed to also install the llvm that I
build for the llvm-gcc-4.2 front end as well as the
llvm-gcc-4.2 front end itself.

Info2: <<
Package: llvm-gcc42
Version: 2.1.999
Revision: r45367
Source: llvm-2.2-%r.tar.bz2
Source-MD5: b2489582afc41f1d7d04c7a03e76d96f
Source2: llvm-gcc-4.2-%r.tar.bz2
Source2-MD5: a3bd327510a2af4dbec8044d88deec9b
Type: -64bit
Depends: gmp-shlibs (>= 4.2.1-1), libmpfr1-shlibs (>= 2.2.0-2),libgettext3-shlibs, %N-shlibs (>= %v-%r)
BuildDepends: gmp (>= 4.2.1-1), libmpfr1 (>= 2.2.0-2), gettext-tools, libgettext3-dev, automake1.9
BuildConflicts: libiconv-dev
ConfigureParams: <<
--prefix=%p/lib/llvm-gcc-4.2 --mandir=%p/share/man --infodir=%p/share/info --with-gmp=%p --with-libiconv-prefix=/usr --with-system-zlib
<<
PatchScript: <<
#!/bin/sh -ev
cd ../llvm-gcc-4.2-%r
patch -p1 < %a/%n.patch
<<
CompileScript: <<
#!/bin/bash -ev
ulimit -s `ulimit -s`
darwinvers=`uname -r|cut -f1 -d.`
mkdir ../llvm_objdir
cd ../llvm_objdir
if [ `uname -p` = "powerpc" ]; then
   TRIPLE=powerpc-apple-darwin$darwinvers
else
   TRIPLE=i686-apple-darwin$darwinvers
fi
../llvm-2.2-%r/configure %c --build=$TRIPLE --target=$TRIPLE --host=$TRIPLE --enable-optimized --enable-assertions
make tools-only
mkdir ../llvm_gcc42_objdir
rm -fr ../llvm-gcc-4.2-%r/libstdc++-v3
cd ../llvm_gcc42_objdir
LLVMOBJDIR="%b/../llvm_objdir"
if [ `uname -p` = "powerpc" ]; then
   TRIPLE=powerpc-apple-darwin$darwinvers
   TARGETOPTIONS=""
else
   TRIPLE=i686-apple-darwin$darwinvers
   TARGETOPTIONS="--with-arch=nocona --with-tune=generic"
fi
../llvm-gcc-4.2-%r/configure %c --build=$TRIPLE --target=$TRIPLE --host=$TRIPLE $TARGETOPTIONS --with-gxx-include-dir=/usr/include/c++/4.0.0 --enable-llvm=$LLVMOB
JDIR --enable-languages=c,c++,fortran
make
<<
InstallScript: <<
#!/bin/sh -ev
cd ../llvm_objdir
make install DESTDIR=%d
cd ../llvm_gcc42_objdir
make install DESTDIR=%d
mkdir -p %i/bin
ln -s %p/lib/llvm-gcc-4.2/bin/gcc %i/bin/llvm-gcc
ln -s %p/lib/llvm-gcc-4.2/bin/g++ %i/bin/llvm-g++
ln -s %p/lib/llvm-gcc-4.2/bin/gfortran %i/bin/llvm-gfortran
ln -s /usr/lib/libstdc++.6.dylib %i/lib/llvm-gcc-4.2/lib/libstdc++.6.dylib
mv %i/share/info/cpp.info %i/share/info/llvm-cpp.info
mv %i/share/info/gcc.info %i/share/info/llvm-gcc.info
mv %i/share/info/cppinternals.info %i/share/info/llvm-cppinternals.info
mv %i/share/info/gccinstall.info %i/share/info/llvm-gccinstall.info
mv %i/share/info/gccint.info %i/share/info/llvm-gccint.info
mv %i/share/info/libgomp.info %i/share/info/llvm-libgomp.info
mv %i/share/info/gfortran.info %i/share/info/llvm-gfortran.info
# remove build path from .la files
perl -pi -e "s, \-L[^ ']*/%n-%v-%r/llvm_objdir/Release/lib[^ ']*,g" `find %i/lib/llvm-gcc-4.2/lib -name '*.la'`
<<
SplitOff: <<
  Package: %N-shlibs
  Description: Shared libraries for llvm-gcc42
  Files: <<
        lib/llvm-gcc-4.2/lib/libgfortran.2*.dylib
        lib/llvm-gcc-4.2/lib/libgomp.1*.dylib
        lib/llvm-gcc-4.2/lib/libgcc_s.1*.dylib
        lib/llvm-gcc-4.2/%lib/libgfortran.2*.dylib
        lib/llvm-gcc-4.2/%lib/libgomp.1*.dylib
  <<
  Shlibs: <<
    %p/lib/llvm-gcc-4.2/lib/libgfortran.2.dylib 3.0.0 %n (>= 2.1.999-r45361) 32
    %p/lib/llvm-gcc-4.2/lib/libgomp.1.dylib 2.0.0 %n (>= 2.1.999-r45361) 32
    %p/lib/llvm-gcc-4.2/lib/libgcc_s.1.dylib 1.0.0 %n (>= 2.1.999-r45361) 32-64
    %p/lib/llvm-gcc-4.2/%lib/libgfortran.2.dylib 3.0.0 %n (>= 2.1.999-r45361) 64
    %p/lib/llvm-gcc-4.2/%lib/libgomp.1.dylib 2.0.0 %n (>= 2.1.999-r45361) 64
  <<
<<
License: GPL
Description: Low Level Virtual Machine Compiler
InfoDocs: llvm-cpp.info llvm-gcc.info llvm-cppinternals.info llvm-gccinstall.info llvm-gccint.info llvm-libgomp.info llvm-gfortran.info
DescDetail: <<
A compilation strategy designed to enable effective program optimization across
the entire lifetime of a program. LLVM supports effective optimization at
compile time, link-time (particularly interprocedural), run-time and offline
(i.e., after software is installed), while remaining transparent to developers
and maintaining compatibility with existing build scripts.
<<
DescPackaging: <<
The tarballs used for this version were created with the commands...
   svn co --revision 45367 http://llvm.org/svn/llvm-project/llvm/trunk llvm-2.2-r45367
   tar --exclude=.svn -jcvf llvm-2.2-r45367.tar.bz2 llvm-2.2-r45367
   svn co --revision 45367 http://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk llvm-gcc-4.2-r45367
   tar --exclude=.svn -jcvf llvm-gcc-4.2-r45367.tar.bz2 llvm-gcc-4.2-r45367
<<
Homepage: http://llvm.org/
Maintainer: Jack Howarth <howarth@bromo.med.uc.edu>
<<

--- llvm-gcc-4.2-r45367.org/configure 2007-12-27 14:08:30.000000000 -0500
+++ llvm-gcc-4.2-r45367/configure 2007-12-27 14:09:33.000000000 -0500
@@ -1224,7 +1224,7 @@
     noconfigdirs="$noconfigdirs sim target-rda"
     # LLVM LOCAL begin
     noconfigdirs="$noconfigdirs target-boehm-gc target-libffi"
- noconfigdirs="$noconfigdirs target-libgfortran target-libjava"
+ noconfigdirs="$noconfigdirs target-libjava"
     noconfigdirs="$noconfigdirs target-libmudflap target-libobjc"
     noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-zlib"
     # LLVM LOCAL end
@@ -1235,7 +1235,7 @@
     noconfigdirs="$noconfigdirs ${libgcj}"
     # LLVM LOCAL begin
     noconfigdirs="$noconfigdirs target-boehm-gc target-libffi"
- noconfigdirs="$noconfigdirs target-libgfortran target-libjava"
+ noconfigdirs="$noconfigdirs target-libjava"
     noconfigdirs="$noconfigdirs target-libmudflap target-libobjc"
     noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-zlib"
     # LLVM LOCAL end

I've created fink packaging for a building the llvm
and llvm-gcc-4.2 svn pulls under fink on Mac OS X. Hopefully
the fink info script and patch should be clear enough for
some comments on my build approach. The llvm-gcc and llvm-g++
compilers seem okay so far. The llvm-gfortran compiler seems to
always spew a warning..

WARNING: 128-bit integers not supported!

...even when just compiling a simple helloworld program
with a single print statement.

128-bit integer arithmetic is in progress, but not fully supported yet (and we have no firm ETA). This is 1462 – CodeGen doesn't fully support i128 if you are interested.

I haven't done a complete
make check-gfortran yet but a partial run looked to be
failing about half of the testsuite. Here is the info
and patch file I am using in fink.

Ok.

ps I assume I am supposed to also install the llvm that I
build for the llvm-gcc-4.2 front end as well as the
llvm-gcc-4.2 front end itself.

I don't think this is needed. That would install tools like "llvm-as", which are useful for LLVM developers, but are not generally useful for end-users of the compiler.

--- llvm-gcc-4.2-r45367.org/configure 2007-12-27 14:08:30.000000000 -0500
+++ llvm-gcc-4.2-r45367/configure 2007-12-27 14:09:33.000000000 -0500

I applied this, thanks! In the future, please send patches as attachments. If you're using apple 'mail', make sure to put the patches in a file that ends with .patch, to avoid having mail inline them. Thanks a lot Jack,

-Chris

Hi,

...The llvm-gfortran compiler seems to
always spew a warning..

WARNING: 128-bit integers not supported!

...even when just compiling a simple helloworld program
with a single print statement.

gfortran always compiles the declarations of all its builtins
no matter what you compile (and regardless of whether you use
the builtins or not). Some of the builtins use 128 bit integers,
so you always get this warning.

Ciao,

Duncan.