diff --git a/gcc/build.sh b/gcc/build.sh new file mode 100755 index 0000000..0aa38bd --- /dev/null +++ b/gcc/build.sh @@ -0,0 +1,196 @@ +#!/bin/bash +# +# This is a generic build.sh script +# It can be used nearly unmodified with many packages +# +# The concept of "method" registering and the logic that implements it was shamelessly +# stolen from jhlj's Compile.sh script :) +# +# Check the following 4 variables before running the script +topdir=gcc +version=3.3.1 +pkgver=1bu +source[0]=$topdir-$version.tar.bz2 +## If there are no patches, simply comment this +#patch[0]= + +# Source function library +. ${HOME}/buildpkg/scripts/buildpkg.functions + +# Define abbreviated version number +abbrev_ver=331 + +# Fill in pkginfo values if necessary +# using pkgname,name,pkgcat,pkgvendor & pkgdesc +pkgname="$pkgprefix""gcc""$abbrev_ver" +name="GCC - GNU Compiler Collection" +pkgvendor="http://gcc.gnu.org" +pkgdesc="GNU Compiler Collection" + +# depend is created by build.sh so make sure +# it's removed by distclean +META_CLEAN="$META_CLEAN depend" + +# We're going to build more than one package from this source +# define helpervars to do that +libgcc_stage=$BUILDPKG_BASE/$topdir/stage.libgcc +gcc_dir=$prefix/gcc-$version +libgcc_pkgname="$pkgprefix""libgcc" +libgcc_name="libgcc - GCC runtime support" +libgcc_pkgcat="library" +libgcc_pkgvendor="http://gcc.gnu.org" +libgcc_pkgdesc="Runtime support for programs built with gcc 3.x" +libgcc_pkgver="1bu_$abbrev_ver" + +libstdc_stage=$BUILDPKG_BASE/$topdir/stage.libstdc +libstdc_pkgname="$pkgprefix""libstdc""$abbrev_ver" +libstdc_name="libstdc++ - GCC runtime support" +libstdc_pkgcat="library" +libstdc_pkgvendor="http://gcc.gnu.org" +libstdc_pkgdesc="Runtime support for c++ programs built with gcc $version" +libstdc_pkgver="1bu" + +MV=/usr/bin/mv + +# Define script functions and register them +METHODS="" +reg() { + METHODS="$METHODS $1" +} + +reg prep +prep() +{ + generic_prep +} + +reg build +build() +{ + setdir $srcdir + $MKDIR objdir + setdir "$srcdir/objdir" + $srcdir/$topsrcdir/configure --prefix=/usr/local/gcc-$version --disable-nls --with-as=/usr/local/bin/as --with-ld=/usr/local/bin/ld --with-system-zlib --enable-languages=c,c++ + $MAKE_PROG +} + +reg install +install() +{ + setdir $srcdir/objdir + $MAKE_PROG DESTDIR=$stagedir install +} + +reg pack +pack() +{ + # We want to create gcc, libstdc++ and libgcc packages + # Move files for libgcc package + $MKDIR -p $libgcc_stage$prefix/lib + $MKDIR -p $libgcc_stage$prefix/lib/sparcv9 + $MV $stagedir$gcc_dir/lib/libgcc_s* $libgcc_stage$prefix/lib + $MV $stagedir$gcc_dir/lib/sparcv9/libgcc_s* $libgcc_stage$prefix/lib/sparcv9 + + # Move files for libstdc++ package + $MKDIR -p $libstdc_stage$prefix/lib + $MKDIR -p $libstdc_stage$prefix/lib/sparcv9 + cp $stagedir$gcc_dir/lib/libstdc++.so* $libstdc_stage$prefix/lib + cp $stagedir$gcc_dir/lib/sparcv9/libstdc++.so* $libstdc_stage$prefix/lib/sparcv9 + rm -f $libstdc_stage$prefix/lib/libstdc++.so.5 + rm -f $libstdc_stage$prefix/lib/sparcv9/libstdc++.so.5 + rm -f $libstdc_stage$prefix/lib/libstdc++.so + rm -f $libstdc_stage$prefix/lib/sparcv9/libstdc++.so + + # now create gcc package and make sure it depends on libstdc++331 + echo "P $libgcc_pkgname $libgcc_pkgdesc" > $metadir/depend # Create dependency file + generic_pack + + # Prepare for libgcc package + $MV $stagedir $stagedir.1 + $MV $libgcc_stage $stagedir + pkgname=$libgcc_pkgname + name=$libgcc_name + pkgcat=$libgcc_pkgcat + pkgvendor=$libgcc_pkgvendor + pkgdesc=$libgcc_pkgdesc + pkgver=$libgcc_pkgver + + distfile=libgcc-$version-$pkgver.sb-$os-$cpu-$pkgdirdesig + usedepend=0 # don't use $metadir/depend file + generic_pack # don't embed any pre/post scripts + + # Prepare for libstdc++ package + $MV $stagedir $libgcc_stage + $MV $libstdc_stage $stagedir + pkgname=$libstdc_pkgname + name=$libstdc_name + pkgcat=$libstdc_pkgcat + pkgvendor=$libstdc_pkgvendor + pkgdesc=$libstdc_pkgdesc + pkgver=$libstdc_pkgver + + distfile=libstdc++-$version-$pkgver.sb-$os-$cpu-$pkgdirdesig + usedepend=0 + generic_pack + + # clean up $stagedir + # We will need to do build.sh install to use it again since we've moved files around + # so we might as well nuke it now + $MV $stagedir.1 $stagedir # move gcc stagedir into the current stagedir + $MV $libgcc_stage $stagedir # move libgcc stagedir into the current stagedir + setdir source + clean stage # Nuke all of it :) +} + +reg distclean +distclean() +{ + clean distclean + pkgname=$libgcc_pkgname + clean meta + pkgname=$libstdc_pkgname + clean meta +} + +################################################### +# No need to look below here +################################################### + +reg all +all() +{ + for METHOD in $METHODS + do + case $METHOD in + all*|*clean) ;; + *) $METHOD + ;; + esac + done + +} + +reg +usage() { + echo Usage $0 "{"$(echo $METHODS | tr " " "|")"}" + exit 1 +} + +OK=0 +for METHOD in $* +do + METHOD=" $METHOD *" + if [ "${METHODS%$METHOD}" == "$METHODS" ] ; then + usage + fi + OK=1 +done + +if [ $OK = 0 ] ; then + usage; +fi + +for METHOD in $* +do + ( $METHOD ) +done