#!/bin/sh
#*---------------------------------------------------------------------*/
#*    serrano/prgm/project/bigloo/distribution/boot                    */
#*                                                                     */
#*    Author      :  Manuel Serrano                                    */
#*    Creation    :  Mon Mar  1 08:32:22 1993                          */
#*    Last change :  Mon Apr  1 08:21:50 1996 (serrano)                */
#*                                                                     */
#*    Le scrypte qui se charge de booter Bigloo sur un site.           */
#*    -------------------------------------------------------------    */
#*    !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!  */
#*    Don't edit this file.                                            */
#*---------------------------------------------------------------------*/

#*---------------------------------------------------------------------*/
#*    Les variables utilisateurs                                       */
#*---------------------------------------------------------------------*/
cc=gcc
version=1.8
cuflags="-O"

#*---------------------------------------------------------------------*/
#*    Le site                                                          */
#*---------------------------------------------------------------------*/
site=`pwd`

#*---------------------------------------------------------------------*/
#*    Quelques autres variables                                        */
#*---------------------------------------------------------------------*/
cflags="$cuflags -I$site/runtime$version/Gc -I$site/lib/$version -w"

tools_dir="$site/tools"
runtime_dir="$site/runtime$version"
comptime_dir="$site/comptime$version"
lib_dir="$site/lib/$version"
bin_dir="$site/bin"

dirname=$tools_dir/dirname

#*---------------------------------------------------------------------*/
#*    C'est bon, on va compiler les deux librairies:                   */
#*---------------------------------------------------------------------*/
echo "Runtime...[$runtime_dir]"
cd $runtime_dir

(cd Gc
 $tools_dir/GC_if_mach MIPS "" echo "as mips_mach_dep.s -o mips_mach_dep.o"
 $tools_dir/GC_if_mach MIPS "" as mips_mach_dep.s -o mips_mach_dep.o || exist $?
 $tools_dir/GC_if_mach MIPS "" cp mips_mach_dep.o ../.Olib/Gc/mach_dep.o
 $tools_dir/GC_if_mach MIPS "" mv mips_mach_dep.o ../.Olib_u/Gc/mach_dep.o)

(cd Gc
 $tools_dir/GC_if_mach RS6000 "" echo "as rs6000_mach_dep.s -o rs6000_mach_dep.o"
 $tools_dir/GC_if_mach RS6000 "" as rs6000_mach_dep.s -o rs6000_mach_dep.o || exist $? 
 $tools_dir/GC_if_mach RS6000 "" cp rs6000_mach_dep.o ../.Olib/Gc/mach_dep.o
 $tools_dir/GC_if_mach RS6000 "" mv rs6000_mach_dep.o ../.Olib_u/Gc/mach_dep.o)

(cd Gc
 $tools_dir/GC_if_mach ALPHA "" echo "as alpha_mach_dep.s -o alpha_mach_dep.o"
 $tools_dir/GC_if_mach ALPHA "" as alpha_mach_dep.s -o alpha_mach_dep.o || exist $?
 $tools_dir/GC_if_mach ALPHA "" cp alpha_mach_dep.o ../.Olib/Gc/mach_dep.o
 $tools_dir/GC_if_mach ALPHA "" mv alpha_mach_dep.o ../.Olib_u/Gc/mach_dep.o)

(cd Gc
 $tools_dir/GC_if_mach SPARC SUNOS5 echo "as sparc_mach_dep.s -o sparc_mach_dep.o"
 $tools_dir/GC_if_mach SPARC SUNOS5 as sparc_mach_dep.s -o sparc_mach_dep.o || exist $?
 $tools_dir/GC_if_mach SPARC SUNOS5 cp sparc_mach_dep.o ../.Olib/Gc/mach_dep.o
 $tools_dir/GC_if_mach SPARC SUNOS5 mv sparc_mach_dep.o ../.Olib_u/Gc/mach_dep.o)

(cd Mlib;
 $tools_dir/if_mach sparc sunos5 echo "as sparc_sunos5_mach_dep.s -o sparc_sunos5_mach_dep.o"
 $tools_dir/if_mach sparc sunos5 as sparc_sunos5_mach_dep.s -o sparc_sunos5_mach_dep.o || exist $?
 $tools_dir/if_mach sparc sunos5 cp sparc_sunos5_mach_dep.o ../.Olib/Mlib/mach_dep.o
 $tools_dir/if_mach sparc sunos5 mv sparc_sunos5_mach_dep.o ../.Olib_u/Mlib/mach_dep.o)

(cd Mlib;
 $tools_dir/if_mach sparc sunos4 echo "as sparc_sunos4_mach_dep.s -o sparc_sunos4_mach_dep.o"
 $tools_dir/if_mach sparc sunos4 as sparc_sunos4_mach_dep.s -o sparc_sunos4_mach_dep.o || exist $?
 $tools_dir/if_mach sparc sunos4 cp sparc_sunos4_mach_dep.o ../.Olib/Mlib/mach_dep.o
 $tools_dir/if_mach sparc sunos4 mv sparc_sunos4_mach_dep.o ../.Olib_u/Mlib/mach_dep.o)

(cd Mlib;
 $tools_dir/if_not_there ../.Olib/Mlib/mach_dep.o echo "$cc $cflags -c mach_dep.c"
 $tools_dir/if_not_there ../.Olib/Mlib/mach_dep.o $cc $cflags -c mach_dep.c || exist $?
 $tools_dir/if_not_there ../.Olib/Mlib/mach_dep.o cp mach_dep.o ../.Olib/Mlib/mach_dep.o
 $tools_dir/if_not_there ../.Olib_u/Mlib/mach_dep.o mv mach_dep.o ../.Olib_u/Mlib/mach_dep.o)

for d in Ieee Llib Rgc Match Pp Eval Read Lalr
do
  for p in .Olib*/$d/*.c
  do
    (cd `$dirname $p`

     arg1=`basename $p`
     if( test -f `basename  $arg1 .c`.o ); then
        echo $arg1 already done
     else
        echo "$cc $cflags -c `basename $arg1`"
        $cc $cflags -c `basename $arg1` || exit $?
     fi) || exit $?
  done
done

for p in Clib Gc Mlib
do
  for f in $p/*.c
  do
    (cd .Olib/$p

     ln -s $runtime_dir/$f .

     arg1=`basename $f`
     if( test -f `basename  $arg1 .c`.o ); then
       echo $arg1 already done
     else
       echo "$cc $cflags -c `basename $arg1`"
       $cc $cflags -c `basename $arg1` || exit $?
     fi

     \rm `basename $f`) || exit $?
  done
done

cp .Olib/Clib/* .Olib_u/Clib
cp .Olib/Gc/* .Olib_u/Gc

if [ -f $lib_dir/libbigloo.a ] 
then rm $lib_dir/libbigloo.a
fi
ar qcv $lib_dir/libbigloo.a .Olib/Clib/*.o    \
                            .Olib/Mlib/*.o    \
                            .Olib/Llib/*.o    \
                            .Olib/Ieee/*.o    \
                            .Olib/Gc/*.o      \
                            .Olib_u/Rgc/*.o   \
                            .Olib_u/Match/*.o \
                            .Olib_u/Eval/*.o  \
                            .Olib_u/Pp/*.o    \
                            .Olib_u/Read/*.o  \
                            .Olib_u/Lalr/*.o
if [ -f $lib_dir/libbigloo_u.a ]
then rm $lib_dir/libbigloo_u.a
fi
ar qcv $lib_dir/libbigloo_u.a .Olib_u/*/*.o

ranlib $lib_dir/libbigloo.a
ranlib $lib_dir/libbigloo_u.a

echo "Libraries done"

#*---------------------------------------------------------------------*/
#*    On va compiler `comptime'                                        */
#*---------------------------------------------------------------------*/
echo "Comptime...[$comptime_dir]"
cd $comptime_dir

for p in */*.c
do
  (cd `$dirname $p`

   arg1=`basename $p`
      
   if( test -f `basename  $arg1 .c`.o ); then
     echo $arg1 already done
   else
     echo "$cc $cflags -c `basename $arg1`"
     $cc $cflags -c `basename $arg1` || exit $?
   fi) || exit $?
done

echo "Linking..."
echo "$cc $cflags -o $bin_dir/bigloo$version */*.o -L$lib_dir -lbigloo -lm"
$cc $cflags -o $bin_dir/bigloo$version */*.o -L$lib_dir -lbigloo -lm || exit $?

echo "Stripping..."
echo "strip $bin_dir/bigloo$version"
strip $bin_dir/bigloo$version || exit $?

#*---------------------------------------------------------------------*/
#*    The heap                                                         */
#*---------------------------------------------------------------------*/
echo "bigloo.heap..."
(BIGLOOLIB=$lib_dir;export BIGLOOLIB;cd $runtime_dir; $bin_dir/bigloo$version -v -unsafe -q -mkheap -mklib Llib/make-lib.scm -heap bigloo.heap) || exit $?

echo "Bigloo done."


