217 lines
7.8 KiB
Bash
217 lines
7.8 KiB
Bash
#
|
|
sdccdir=$PWD
|
|
echo "/*-------------------------------------------------------------------------"
|
|
echo " sdccbuild.sh - installation & build script for SDCC"
|
|
echo
|
|
echo " Written By - Sandeep Dutta . sandeep.dutta@usa.net (1999)"
|
|
echo
|
|
echo " This program is free software; you can redistribute it and/or modify it"
|
|
echo " under the terms of the GNU General Public License as published by the"
|
|
echo " Free Software Foundation; either version 2, or (at your option) any"
|
|
echo " later version."
|
|
echo
|
|
echo " This program is distributed in the hope that it will be useful,"
|
|
echo " but WITHOUT ANY WARRANTY; without even the implied warranty of"
|
|
echo " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
|
|
echo " GNU General Public License for more details."
|
|
echo
|
|
echo " You should have received a copy of the GNU General Public License"
|
|
echo " along with this program; if not, write to the Free Software"
|
|
echo " Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA."
|
|
echo
|
|
echo " In other words, you are welcome to use, share and improve this program."
|
|
echo " You are forbidden to forbid anyone else to use, share and improve"
|
|
echo " what you give them. Help stamp out software-hoarding! "
|
|
echo "-------------------------------------------------------------------------*/"
|
|
echo
|
|
echo
|
|
echo "This script will compile and build sdcc compiler system. Executables will"
|
|
echo "be placed in the directory '" $sdccdir"/bin' . Make sure you add this"
|
|
echo " directory to your PATH environment variable."
|
|
echo
|
|
echo "Hit Enter to start the build process"
|
|
read junk
|
|
echo "----------------------------------------------------------" ;
|
|
echo " Building 'gc - a conservative garbage collector'" ;
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
if test -d $sdccdir/gc;
|
|
then cd $sdccdir/gc ;
|
|
# make -f Makefile clean
|
|
else
|
|
echo "----------------------------------------------------------" ;
|
|
echo " directory " $sdccdir/gc "not found . Script terminated";
|
|
echo "----------------------------------------------------------" ;
|
|
exit 1;
|
|
fi
|
|
|
|
if make -f Makefile CC=gcc ;
|
|
then
|
|
echo "----------------------------------------------------------" ;
|
|
echo " gc - build successful" ;
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
else
|
|
echo "----------------------------------------------------------" ;
|
|
echo " gc - build failed . Script terminated";
|
|
echo "----------------------------------------------------------" ;
|
|
exit 1;
|
|
fi
|
|
|
|
echo "----------------------------------------------------------" ;
|
|
echo " Building 'cpp - c-preprocessor'" ;
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
if test -d $sdccdir/cpp ;
|
|
then cd $sdccdir/cpp ;
|
|
# rm *.o ;
|
|
else
|
|
echo "----------------------------------------------------------" ;
|
|
echo " directory " $sdccdir/cpp "not found . Script terminated";
|
|
echo "----------------------------------------------------------" ;
|
|
exit 1;
|
|
fi
|
|
|
|
if make -f Makefile SDCCDIR=$sdccdir;
|
|
then
|
|
echo "----------------------------------------------------------" ;
|
|
echo " cpp - build successful" ;
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
else
|
|
echo "----------------------------------------------------------" ;
|
|
echo " cpp - build failed . Script terminated";
|
|
echo "----------------------------------------------------------" ;
|
|
exit 1;
|
|
fi
|
|
|
|
echo "----------------------------------------------------------" ;
|
|
echo " Building 'asx8051 - assembler'" ;
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
if test -d $sdccdir/asxxxx ;
|
|
then cd $sdccdir/asxxxx ;
|
|
# rm *.o ;
|
|
else
|
|
echo "----------------------------------------------------------" ;
|
|
echo " directory " $sdccdir/asxxxx "not found . Script terminated";
|
|
echo "----------------------------------------------------------" ;
|
|
exit 1;
|
|
fi
|
|
|
|
if make -f Makefile.asx8051 SDCCDIR=$sdccdir ;
|
|
then
|
|
echo "----------------------------------------------------------" ;
|
|
echo " asx8051 - build successful" ;
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
else
|
|
echo "----------------------------------------------------------" ;
|
|
echo " asx8051 - build failed . Script terminated";
|
|
echo "----------------------------------------------------------" ;
|
|
exit 1;
|
|
fi
|
|
|
|
echo "----------------------------------------------------------" ;
|
|
echo " Building 'aslink - linkage editor' " ;
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
if test -d $sdccdir/asxxxx ;
|
|
then cd $sdccdir/asxxxx ;
|
|
# rm *.o ;
|
|
else
|
|
echo "----------------------------------------------------------" ;
|
|
echo " directory " $sdccdir/asxxxx "not found . Script terminated";
|
|
echo "----------------------------------------------------------" ;
|
|
exit 1;
|
|
fi
|
|
|
|
if make -f Makefile.aslink SDCCDIR=$sdccdir ;
|
|
then
|
|
echo "----------------------------------------------------------" ;
|
|
echo " aslink - build successful" ;
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
else
|
|
echo "----------------------------------------------------------" ;
|
|
echo " aslink - build failed . Script terminated";
|
|
echo "----------------------------------------------------------" ;
|
|
exit 1;
|
|
fi
|
|
|
|
echo "----------------------------------------------------------" ;
|
|
echo " Building 'sdcc' "
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
cd $sdccdir
|
|
if test `uname` = "Linux";
|
|
then
|
|
ldflag="-Wl,-defsym,_DYNAMIC=0" ;
|
|
fi
|
|
|
|
#make -f Makefile clean
|
|
if make -f Makefile SDCCDIR=$sdccdir STD_LIB="libsdcc" STD_INT_LIB="libint" STD_LONG_LIB="liblong" STD_FP_LIB="libfloat" LDXFLAGS=$ldflag
|
|
then
|
|
echo "----------------------------------------------------------" ;
|
|
echo " sdcc - build successful" ;
|
|
echo "----------------------------------------------------------" ;
|
|
else
|
|
echo "----------------------------------------------------------" ;
|
|
echo " sdcc - build failed . Script terminated";
|
|
echo "----------------------------------------------------------" ;
|
|
exit 1;
|
|
fi
|
|
|
|
echo "----------------------------------------------------------" ;
|
|
echo " GREAT!! now we will use SDCC to compile the support rtns"
|
|
echo "----------------------------------------------------------" ;
|
|
|
|
echo "To compile the support routines type 'Large' or 'Small' or Control-c to quit"
|
|
read size
|
|
|
|
lowersize=`echo $size | awk '{ printf("%s", tolower($0)) }'`
|
|
|
|
cd $sdccdir/sdcc51lib
|
|
|
|
PATH_SEPARATOR=":"
|
|
if test `uname` = "MS-DOS";
|
|
then
|
|
PATH_SEPARATOR=";"
|
|
fi
|
|
|
|
PATH=$PATH$PATH_SEPARATOR$sdccdir/bin
|
|
|
|
if test $lowersize = "large";
|
|
then
|
|
echo "Compiling with the Large Model"
|
|
model="--model-large"
|
|
else
|
|
echo "Compiling with the Small Model"
|
|
model="--model-small"
|
|
fi
|
|
|
|
for i in _*.c ;
|
|
do
|
|
echo "Compiling file " $i ;
|
|
sdcc -c $model -I$sdccdir/sdcc51inc $i ;
|
|
done;
|
|
|
|
echo "Compiling file malloc.c"
|
|
sdcc -c $model malloc.c
|
|
|
|
echo "Compiling file serial.c"
|
|
sdcc -c $model serial.c
|
|
|
|
|
|
echo "----------------------------------------------------------" ;
|
|
echo " Important Directories & files"
|
|
echo " Header <...h> files directory " $sdccdir"/sdcc51inc"
|
|
echo " Library .lib files directory " $sdccdir"/sdcc51lib"
|
|
echo " SDCC support libraries are :-"
|
|
echo " " $sdccdir"/sdcc51lib/libsdcc.lib - basic support routines"
|
|
echo " " $sdccdir"/sdcc51lib/libint.lib - (16 bit) arithmetic "
|
|
echo " " $sdccdir"/sdcc51lib/liblong.lib - (32 bit) arithmetic "
|
|
echo " " $sdccdir"/sdcc51lib/libfloat.lib- floating point routines"
|
|
echo " DON'T FORGET to add " $sdccdir"/bin to your PATH environment"
|
|
echo "----------------------------------------------------------" ;
|