#!/bin/bash umask 022 #------- # Verify the correct architecture #------- mach=$( uname -m ) if [ "$mach" != "sparc" -a "$mach" != "sparc32" ]; then echo "Unrecognized architecture: $mach" exit 1 fi #------- # Get version number #------- version=$( pwd | gawk -F- '{print $NF;}' ) #------- # Set up various options #------- deftrace="-DCDINIT_TRACE=1" defarch="-DCDINIT_ARCH_SPARC32" defname='-DCDINIT_ARCH_NAME="sparc32"' defvers="-DCDINIT_VERSION="'"'"${version}"'"' comopt="-O2 -Wall -fno-builtin -fomit-frame-pointer" asmopt="-static -nostdlib" #------- # Compile the divide and remainder functions #------- echo "===============================================================================" echo gcc $comopt -S -o div.s $deftrace $defarch $defname $defvers div.c gcc $comopt -S -o div.s $deftrace $defarch $defname $defvers div.c || exit 1 # echo "sed '1,$s/div/.div/g' < div.s > div.S" # sed '1,$s/div/.div/g' < div.s > div.S || exit 1 echo gcc $asmopt -o div.o div.s gcc $asmopt -c -o div.o div.s || exit 1 echo gcc $comopt -S -o udiv.s $deftrace $defarch $defname $defvers udiv.c gcc $comopt -S -o udiv.s $deftrace $defarch $defname $defvers udiv.c || exit 1 # echo "sed '1,$s/udiv/.udiv/g' < udiv.s > udiv.S" # sed '1,$s/udiv/.udiv/g' < udiv.s > udiv.S || exit 1 echo gcc $asmopt -o udiv.o udiv.s gcc $asmopt -c -o udiv.o udiv.s || exit 1 echo gcc $comopt -S -o urem.s $deftrace $defarch $defname $defvers urem.c gcc $comopt -S -o urem.s $deftrace $defarch $defname $defvers urem.c || exit 1 # echo "sed '1,$s/urem/.urem/g' < urem.s > urem.S" # sed '1,$s/urem/.urem/g' < urem.s > urem.S || exit 1 echo gcc $asmopt -o urem.o urem.s gcc $asmopt -c -o urem.o urem.s || exit 1 ls -ld div.o ls -ld udiv.o ls -ld urem.o #------- # Compile the three stages of cdinit. #------- echo "===============================================================================" echo gcc $comopt -S -o cdinit1-sparc32.s $deftrace $defarch $defname $defvers cdinit1.c gcc $comopt -S -o cdinit1-sparc32.s $deftrace $defarch $defname $defvers cdinit1.c || exit 1 echo gcc $asmopt -o cdinit1-sparc32 cdinit1-sparc32.s div.o udiv.o urem.o gcc $asmopt -o cdinit1-sparc32 cdinit1-sparc32.s div.o udiv.o urem.o || exit 1 echo strip cdinit1-sparc32 strip cdinit1-sparc32 || exit 1 chmod 755 cdinit1-sparc32 || exit 1 ls -ld cdinit1-sparc32 || exit 1 echo "===============================================================================" echo gcc $comopt -S -o cdinit2-sparc32.s $deftrace $defarch $defname $defvers cdinit2.c gcc $comopt -S -o cdinit2-sparc32.s $deftrace $defarch $defname $defvers cdinit2.c || exit 1 echo gcc $asmopt -o cdinit2-sparc32 cdinit2-sparc32.s div.o udiv.o urem.o gcc $asmopt -o cdinit2-sparc32 cdinit2-sparc32.s div.o udiv.o urem.o || exit 1 echo strip cdinit2-sparc32 strip cdinit2-sparc32 || exit 1 chmod 755 cdinit2-sparc32 || exit 1 ls -ld cdinit2-sparc32 || exit 1 echo "===============================================================================" echo gcc $comopt -S -o cdinit3-sparc32.s $deftrace $defarch $defname $defvers cdinit3.c gcc $comopt -S -o cdinit3-sparc32.s $deftrace $defarch $defname $defvers cdinit3.c || exit 1 echo gcc $asmopt -o cdinit3-sparc32 cdinit3-sparc32.s div.o udiv.o urem.o gcc $asmopt -o cdinit3-sparc32 cdinit3-sparc32.s div.o udiv.o urem.o || exit 1 echo strip cdinit3-sparc32 strip cdinit3-sparc32 || exit 1 chmod 755 cdinit3-sparc32 || exit 1 ls -ld cdinit3-sparc32 || exit 1 echo "===============================================================================" exit 0