#!/bin/sh
#*=====================================================================*/
#*    serrano/ml/camloo/distribution/boot ...                          */
#*    -------------------------------------------------------------    */
#*    Author      :  Manuel Serrano                                    */
#*    Creation    :  Mon Mar  1 08:32:22 1993                          */
#*    Last change :  Thu May  5 08:11:39 1994 (serrano)                */
#*    -------------------------------------------------------------    */
#*    Le scrypte qui se charge de booter camloo sur un site.           */
#*    -------------------------------------------------------------    */
#*    !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!  */
#*    Don't edit this file.                                            */
#*=====================================================================*/

#*---------------------------------------------------------------------*/
#*    We get the name of the C compiler                                */
#*---------------------------------------------------------------------*/
bigloo=bigloo
cc="`$bigloo -query | grep \"\*cc[ ]*\*\" | sed 's/\*cc\*[ ]*://'`"
bigloo_h="`$bigloo -query | grep \"\*include-dir[ ]*\*\" | sed 's/\*include-dir\*[ ]*:[ ]*//'`"

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

#*---------------------------------------------------------------------*/
#*    Le path                                                          */
#*---------------------------------------------------------------------*/
PATH=$PATH:$site

#*---------------------------------------------------------------------*/
#*    version                                                          */
#*---------------------------------------------------------------------*/
version=0.2

#*---------------------------------------------------------------------*/
#*    Quelques autres variables                                        */
#*---------------------------------------------------------------------*/
runtime_dir="$site/runtime$version"
comptime_dir="$site/comptime$version"
lib_dir="$site/lib/$version"
bin_dir="$site/bin"

cflags="-O -I $runtime_dir/Include -I$runtime_dir/CAMLClib -I$bigloo_h"
bflags="-O2 -unsafe"

#*---------------------------------------------------------------------*/
#*    On fait la librarie                                              */
#*---------------------------------------------------------------------*/
(cd $runtime_dir

  $bigloo Llib/make-lib.scm -mkheap -heap $lib_dir/caml-bigloo.heap

  # on compile les fichiers C
  for p in Clib CAMLClib
  do
    for f in $p/*.c
    do
      (cd .Olib/$p

       \rm -f `basename $f`
       ln -s $runtime_dir/$f .

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

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

  # on compile les fichiers ML
  for p in .Olib/Mlib/*.scm
  do
    if( test -f .Olib/Mlib/`basename $p .scm`.o ); then
      echo $p already done
    else
      $bigloo -A -mklib $bflags -extend $site/lib/$version/caml $p 
    fi
  done

  # on compile les fichiers Scheme
  for p in Llib/*.scm
  do
    if( test -f .Olib/Llib/`basename $p .scm`.o ); then
      echo $p already done
    else
      $bigloo -mklib $bflags $p -A -copt "$cflags" -o .Olib/Llib/`basename $p .scm`.o
    fi
  done

  # on fait la librairie
  ar rcv $lib_dir/libbigloo_caml_u.a .Olib/Llib/*.o \
                                     .Olib/Clib/*.o \
                                     .Olib/Mlib/*.o \
                                     .Olib/CAMLClib/*.o

  ranlib $lib_dir/libbigloo_caml_u.a) || exit $?

#*---------------------------------------------------------------------*/
#*    On fait camloo1                                                  */
#*---------------------------------------------------------------------*/
(cd $comptime_dir

  (cd Camlc
    for p in *.scm
    do
      
      if( test -f `basename $p .scm`.o); then
        echo $p already done
      else
        $bigloo $bflags -A -extend $site/lib/$version/caml $p || exit $?
      fi

    done

    $bigloo $bflags *.o -o $site/bin/camloo1 -extend $site/lib/$version/caml
  ) || exit $?
) || exit $?

#*---------------------------------------------------------------------*/
#*    On fait camloo2                                                  */
#*---------------------------------------------------------------------*/
(cd $comptime_dir

  for p in Camloo/*.scm
  do
      
    if( test -f Camloo/`basename $p .scm`.o); then
      echo $p already done
    else
      $bigloo $bflags -A -copt "$cflags" -afile .afile $p || exit $?
    fi

  done

  $bigloo $bflags Camloo/*.o $runtime_dir/.Olib/Llib/constr.o -o $site/bin/camloo2
) || exit $?



