--- gcc.SlackBuild 2009-05-24 19:41:51.000000000 +0200 +++ gcc-multilib.SlackBuild 2009-06-25 21:23:16.000000000 +0200 @@ -45,11 +45,16 @@ VERSION=4.3.3 ARCH=${ARCH:-x86_64} TARGET=$ARCH-slackware-linux -BUILD=${BUILD:-4} +BUILD=${BUILD:-4alien} # How many jobs to run in parallel: NUMJOB=" -j 4 " +# What do we want to build +LANGS=${LANGS:-'c,c++,ada,fortran,java,objc'} + +echo "Building these compilers: $LANGS"; sleep 5 + if [ "$ARCH" = "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mcpu=i686" LIBDIRSUFFIX="" @@ -169,11 +174,11 @@ $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog ) - mkdir -p $PKG3/usr/doc/gcc-${VERSION}/libada + mkdir -p $PKG4/usr/doc/gcc-${VERSION}/libada ( cd libada cp -a \ ChangeLog \ - $PKG3/usr/doc/gcc-${VERSION}/libada + $PKG4/usr/doc/gcc-${VERSION}/libada ) mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libffi @@ -240,16 +245,24 @@ if [ "$ARCH" != "x86_64" ]; then GCC_ARCHOPTS="--with-arch=$ARCH" else - GCC_ARCHOPTS="--disable-multilib" + GCC_ARCHOPTS="--enable-multilib" fi + # The first run of the script, we can not build ada compiler because that + # requires gnat; + # First run: use + # LANGS="all" to just build c,c++,fortran,java,objc + # Second run: use + # LANGS="c,c++,ada,fortran,java,objc" + CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ - ../gcc-$VERSION/configure --prefix=/usr \ + ../gcc-$VERSION/configure \ + --prefix=/usr \ --libdir=/usr/lib$LIBDIRSUFFIX \ --enable-shared \ --enable-bootstrap \ - --enable-languages=ada,c,c++,fortran,java,objc \ + --enable-languages=${LANGS} \ --enable-threads=posix \ --enable-checking=release \ --with-system-zlib \ @@ -265,8 +278,13 @@ # Start the build: - # Include all debugging info (for now): - make $NUMJOB bootstrap; + if [ "$LANGS" = "all" ]; then + # Not building ada, so bootstrap not required: + make $NUMJOB + else + # Include all debugging info (for now): + make $NUMJOB bootstrap + fi ( cd gcc make $NUMJOB gnatlib GNATLIBCFLAGS="$SLKCFLAGS" @@ -291,11 +309,12 @@ cat stage1-gcc/specs > $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${ARCH}-slackware-linux/${VERSION}/specs fi -# Make our 64bit gcc look for 32bit gcc binaries in ./32 subdirectory: -if [ "$ARCH" = "x86_64" ]; then - sed -i 's#;.\(:../lib !m64 m32;\)$#;32\1#' \ - $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${ARCH}-slackware-linux/${VERSION}/specs -fi +## Make our 64bit gcc look for 32bit gcc binaries in ./32 subdirectory: +# (this edit only needed if gcc was compiled with disable-multilib) +#if [ "$ARCH" = "x86_64" ]; then +# sed -i 's#;.\(:../lib !m64 m32;\)$#;32\1#' \ +# $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${ARCH}-slackware-linux/${VERSION}/specs +#fi # make ada.install-common DESTDIR=$PKG1 # make install-gnatlib DESTDIR=$PKG1 @@ -349,7 +368,7 @@ ## build the txz package #( # cd $PKG1; - # makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz + # makepkg -l y -c n $TMP/gcc-${VERSION}_multilib-$ARCH-$BUILD.txz #) # keep a log ) 2>&1 | tee $TMP/gcc.build.log @@ -364,6 +383,10 @@ mv $PKG1/usr/include/c++ usr/include mkdir -p usr/lib${LIBDIRSUFFIX} mv $PKG1/usr/lib${LIBDIRSUFFIX}/*++* usr/lib${LIBDIRSUFFIX} + if [ "$ARCH" = "x86_64" ]; then + mkdir -p usr/lib + mv $PKG1/usr/lib/*++* usr/lib + fi mkdir -p usr/libexec/gcc/$TARGET/$VERSION mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1plus usr/libexec/gcc/$TARGET/$VERSION/cc1plus mkdir -p usr/man/man1 @@ -385,6 +408,12 @@ mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/finclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/libgfortran* usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION + if [ "$ARCH" = "x86_64" ]; then + mkdir -p usr/lib + mv $PKG1/usr/lib/libgfortran* usr/lib + mkdir -p usr/lib/gcc/$TARGET/$VERSION + mv $PKG1/usr/lib/gcc/$TARGET/$VERSION/finclude usr/lib/gcc/$TARGET/$VERSION + fi mkdir -p usr/libexec/gcc/$TARGET/$VERSION mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/f951 usr/libexec/gcc/$TARGET/$VERSION/f951 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/libgfortran* usr/libexec/gcc/$TARGET/$VERSION @@ -404,6 +433,11 @@ mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adainclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adalib usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION + if [ "$ARCH" = "x86_64" ]; then + mkdir -p usr/lib/gcc/$TARGET/$VERSION + mv $PKG1/usr/lib/gcc/$TARGET/$VERSION/adainclude usr/lib/gcc/$TARGET/$VERSION + mv $PKG1/usr/lib/gcc/$TARGET/$VERSION/adalib usr/lib/gcc/$TARGET/$VERSION + fi ) # gcc-java: @@ -452,6 +486,16 @@ mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgij* usr/lib${LIBDIRSUFFIX} mv $PKG1/usr/lib${LIBDIRSUFFIX}/lib-org* usr/lib${LIBDIRSUFFIX} mv $PKG1/usr/lib${LIBDIRSUFFIX}/security usr/lib${LIBDIRSUFFIX} + if [ "$ARCH" = "x86_64" ]; then + mkdir -p usr/lib + mv $PKG1/usr/lib/libffi* usr/lib + mv $PKG1/usr/lib/logging.properties usr/lib + mv $PKG1/usr/lib/gcj* usr/lib + mv $PKG1/usr/lib/libgcj* usr/lib + mv $PKG1/usr/lib/libgij* usr/lib + mv $PKG1/usr/lib/lib-org* usr/lib + mv $PKG1/usr/lib/security usr/lib + fi mkdir -p usr/lib${LIBDIRSUFFIX}/pkgconfig mv $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj*.pc usr/lib${LIBDIRSUFFIX}/pkgconfig rmdir $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig 2> /dev/null @@ -491,6 +535,10 @@ ( cd $PKG6 mkdir -p usr/lib${LIBDIRSUFFIX} mv $PKG1/usr/lib${LIBDIRSUFFIX}/libobjc* usr/lib${LIBDIRSUFFIX} + if [ "$ARCH" = "x86_64" ]; then + mkdir -p usr/lib + mv $PKG1/usr/lib/libobjc* usr/lib + fi mkdir -p usr/libexec/gcc/$TARGET/$VERSION mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1obj usr/libexec/gcc/$TARGET/$VERSION mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include @@ -526,21 +574,31 @@ done ( cd $PKG1 - makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz ) + makepkg -l y -c n $TMP/gcc-${VERSION}_multilib-$ARCH-$BUILD.txz ) + ( cd $PKG2 - makepkg -l y -c n $TMP/gcc-g++-$VERSION-$ARCH-$BUILD.txz ) + makepkg -l y -c n $TMP/gcc-g++-${VERSION}_multilib-$ARCH-$BUILD.txz ) + +echo $LANGS | grep -qwE '(all|fortran)' && \ ( cd $PKG3 - makepkg -l y -c n $TMP/gcc-gfortran-$VERSION-$ARCH-$BUILD.txz ) + makepkg -l y -c n $TMP/gcc-gfortran-${VERSION}_multilib-$ARCH-$BUILD.txz ) + +echo $LANGS | grep -qw ada && \ ( cd $PKG4 - makepkg -l y -c n $TMP/gcc-gnat-$VERSION-$ARCH-$BUILD.txz ) + makepkg -l y -c n $TMP/gcc-gnat-${VERSION}_multilib-$ARCH-$BUILD.txz ) + +echo $LANGS | grep -qwE '(all|java)' && \ ( cd $PKG5 - makepkg -l y -c n $TMP/gcc-java-$VERSION-$ARCH-$BUILD.txz ) + makepkg -l y -c n $TMP/gcc-java-${VERSION}_multilib-$ARCH-$BUILD.txz ) + +echo $LANGS | grep -qwE '(all|objc)' && \ ( cd $PKG6 - makepkg -l y -c n $TMP/gcc-objc-$VERSION-$ARCH-$BUILD.txz ) + makepkg -l y -c n $TMP/gcc-objc-${VERSION}_multilib-$ARCH-$BUILD.txz ) + #( cd $PKG7 -# makepkg -l y -c n $TMP/gcc-g++-gch-$VERSION-$ARCH-$BUILD.txz ) +# makepkg -l y -c n $TMP/gcc-g++-gch-${VERSION}_multilib-$ARCH-$BUILD.txz ) echo -echo "Slackware GCC package build complete!" +echo "Slackware GCC (multilib) package build complete!" echo