#!/bin/sh # build gcc for Slackware VERSION=gcc-3.1 ARCH=i386 BUILD=1 CWD=`pwd` TARGET=$ARCH-slackware-linux TEMPDIR=/tmp # These are to install the docs for easy package splitting. # Comment these out if you plan to leave gcc as a single large package. DF=gcc-g77/ DX=gcc-gxx/ DJ=gcc-java/ DO=gcc-objc/ cd $TEMPDIR tar xjvf $CWD/$VERSION.tar.bz2 # install docs ( cd $VERSION # Fix perms/owners chown -R root.root . find . -perm 777 -exec chmod 755 {} \; find . -perm 775 -exec chmod 755 {} \; find . -perm 664 -exec chmod 644 {} \; mkdir -p $TEMPDIR/package-gcc/usr/doc/$VERSION # Only the most recent ChangeLog... shouldn't be too big. :) cp -a \ BUGS COPYING COPYING.LIB ChangeLog FAQ GNATS INSTALL MAINTAINERS README *.html \ $TEMPDIR/package-gcc/usr/doc/$VERSION mkdir -p $TEMPDIR/package-gcc/usr/doc/${VERSION}/gcc mkdir -p $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/gcc/f ( cd gcc cp -a ABOUT* COPYING* LANG* NEWS README* SERVICE \ $TEMPDIR/package-gcc/usr/doc/$VERSION/gcc cd f cp -a BUGS NEWS README RELEASE-PREP \ $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/gcc/f cd ../objc mkdir -p $TEMPDIR/package-gcc/usr/doc/${DO}${VERSION}/gcc/objc cp -a README $TEMPDIR/package-gcc/usr/doc/${DO}${VERSION}/gcc/objc ) mkdir -p $TEMPDIR/package-gcc/usr/doc/${DJ}${VERSION}/fastjar ( cd fastjar cp -a \ AUTHORS CHANGES COPYING ChangeLog NEWS README \ $TEMPDIR/package-gcc/usr/doc/${DJ}${VERSION}/fastjar ) mkdir -p $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/libf2c mkdir -p $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/libf2c/libF77 mkdir -p $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/libf2c/libI77 mkdir -p $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/libf2c/libU77 ( cd libf2c cp -a \ README TODO disclaimer.netlib permission.netlib readme.netlib \ $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/libf2c ( cd libF77 cp -a Notice README.netlib \ $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/libf2c/libF77 ) ( cd libI77 cp -a Notice README.netlib \ $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/libf2c/libI77 ) ( cd libU77 cp -a COPYING.LIB PROJECTS README \ $TEMPDIR/package-gcc/usr/doc/${DF}${VERSION}/libf2c/libU77 ) ) mkdir -p $TEMPDIR/package-gcc/usr/doc/${DJ}${VERSION}/libjava ( cd libjava cp -a \ COPYING ChangeLog HACKING LIBGCJ_LICENSE NEWS README THANKS \ $TEMPDIR/package-gcc/usr/doc/${DJ}${VERSION}/libjava ) mkdir -p $TEMPDIR/package-gcc/usr/doc/${DO}${VERSION}/libobjc ( cd libobjc cp -a README README.threads THREADS THREADS.MACH \ $TEMPDIR/package-gcc/usr/doc/${DO}${VERSION}/libobjc ) mkdir -p $TEMPDIR/package-gcc/usr/doc/${DX}${VERSION}/libstdc++-v3 ( cd libstdc++-v3 cp -a README $TEMPDIR/package-gcc/usr/doc/${DX}${VERSION}/libstdc++-v3 cp -a docs/html/faq/index.html $TEMPDIR/package-gcc/usr/doc/${DX}${VERSION}/libstdc++-v3/faq.html ) ) # build gcc ( mkdir gcc.build.lnx; cd gcc.build.lnx; # CFLAGS="-Wall -g1 -O2" # CFLAGS="-Wall -O2" LDFLAGS=-s # CXXFLAGS="-O2" ../$VERSION/configure --prefix=/usr \ --enable-shared \ --with-gnu-ld \ --enable-threads \ --verbose \ --target=${TARGET} \ --host=${TARGET} # Include all debugging info: #make bootstrap; # Include less debugging info: #make CFLAGS='-O2' LIBCFLAGS='-g -O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap # Include even less debugging info: make BOOT_CFLAGS='-O2 -march=i386 -mcpu=i686' STAGE1_CFLAGS='-O2 -march=i386 -mcpu=i686' CFLAGS='-O2 -march=i386 -mcpu=i686' CXXFLAGS='-O2 -march=i386 -mcpu=i686' LIBCFLAGS='-O2 -g -march=i386 -mcpu=i686' LIBCXXFLAGS='-O2 -g -march=i386 -mcpu=i686 -fno-implicit-templates' GCJFLAGS='-O2 -march=i386 -mcpu=i686' bootstrap make info make check; make install prefix=$TEMPDIR/package-gcc/usr; make -i install-info prefix=$TEMPDIR/package-gcc/usr; # Fix stuff up: chown -R root.root $TEMPDIR/package-gcc ( cd $TEMPDIR/package-gcc/usr/info ; rm dir ; gzip -9 * ) cd $TEMPDIR/package-gcc mkdir -p lib ( cd lib ; ln -sf /usr/bin/cpp . ) ( cd usr/bin mv g++ g++-$VERSION mv gcc $VERSION mv g77 g77-$VERSION ln -sf g++-$VERSION g++ ln -sf $VERSION gcc ln -sf g77-$VERSION g77 ln -sf g++ c++ ln -sf gcc cc ln -sf $VERSION i386-slackware-linux-gcc ln -sf g++-$VERSION i386-slackware-linux-c++ ln -sf g++-$VERSION i386-slackware-linux-g++ ln -sf g77 f77 strip * chown root.bin * . ) ( cd usr/lib/gcc-lib/i386-slackware-linux/3.0 strip cc1* collect2 cpp f771 jc1 jvgenmain ) ( cd usr/man gzip -9 */* cd man1 ln -sf g++.1.gz c++.1.gz ln -sf g77.1.gz f77.1.gz ln -sf gcc.1.gz cc.1.gz ) # The new tar ignores umask... find $TEMPDIR/package-gcc/usr/doc -type f -exec chmod 644 {} \; find $TEMPDIR/package-gcc/usr/doc -type d -exec chmod 755 {} \; mkdir -p $TEMPDIR/package-gcc/install # This big package will need to be split... ( cd $CWD for file in slack-desc* ; do cat $file > $TEMPDIR/package-gcc/install/$file done ) # Leave a default so the package can work as-is: cp $TEMPDIR/package-gcc/install/slack-desc.gcc $TEMPDIR/package-gcc/install/slack-desc # build the tgz package ( cd $TEMPDIR/package-gcc; makepkg -l y -c n $TEMPDIR/$VERSION-$ARCH-$BUILD.tgz ) # keep a log ) 2>&1 | tee $TEMPDIR/gcc.build.log