#!/bin/sh
# build gcc for Slackware

CWD=`pwd`
GCC_VER=3.0
ARCH=gcc-$GCC_VER
TARGET=i386-slackware-linux
TEMPDIR=/tmp

cd $TEMPDIR
tar xyvf $CWD/gcc-3.0.tar.bz2
# install docs
( cd gcc-3.0
  mkdir -p $TEMPDIR/package-gcc/usr/doc/gcc-3.0
  cp -a BUGS COPYING COPYING.LIB FAQ GNATS MAINTAINERS README faq.html gnats.html \
    $TEMPDIR/package-gcc/usr/doc/gcc-3.0
  mkdir -p $TEMPDIR/package-gcc/usr/doc/gcc-3.0/gcc/f
  ( cd gcc
    cp -a ABOUT* COPYING* LANG* NEWS README* SERVICE \
       $TEMPDIR/package-gcc/usr/doc/gcc-3.0/gcc
    cd f
    cp -a BUGS NEWS README RELEASE-PREP \
       $TEMPDIR/package-gcc/usr/doc/gcc-3.0/gcc/f
    cd ../objc
    mkdir -p $TEMPDIR/package-gcc/usr/doc/gcc-3.0/gcc/objc
    cp -a README $TEMPDIR/package-gcc/usr/doc/gcc-3.0/gcc/objc
  )
)
# build gcc
( mkdir gcc.build.lnx;
  cd gcc.build.lnx;
  # CFLAGS="-Wall -g1 -O2"
  CFLAGS="-Wall -O2" LDFLAGS=-s \
    ../$ARCH/configure --prefix=/usr \
                       --enable-shared \
                       --with-gnu-ld \
                       --enable-threads \
                       --verbose \
                       --target=${TARGET} \
                       --host=${TARGET}
  make 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++-gcc-3.0
    mv gcc gcc-3.0
    mv g77 g77-gcc-3.0
    ln -sf g++-gcc-3.0 g++
    ln -sf gcc-3.0 gcc
    ln -sf g77-gcc-3.0 g77 
    ln -sf g++ c++
    ln -sf gcc cc
    ln -sf gcc-3.0 i386-slackware-linux-gcc 
    ln -sf g++-gcc-3.0 i386-slackware-linux-c++
    ln -sf g++-gcc-3.0 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 *
    ln -sf g++.1.gz c++.1.gz
    ln -sf g77.1.gz f77.1.gz
    ln -sf gcc.1.gz cc.1.gz
  )  

  # build the tgz package
  (
    cd $TEMPDIR/package-gcc;
    echo "y
n" | makepkg $TEMPDIR/$ARCH.tgz
  )
# keep a log
) 2>&1 | tee $TEMPDIR/gcc.build.log

