#*---------------------------------------------------------------------*/
#*    serrano/ml/camloo/contrib0.2/libunix/Makefile ...                */
#*                                                                     */
#*    Auteur      :  Manuel SERRANO                                    */
#*    Creation    :  Tue May 14 14:21:00.2991                          */
#*    Last change :  Wed May 25 14:33:03 1994 (serrano)                */
#*                                                                     */
#*    Le makefile pour construire la librarie de caml-bigloo ...       */
#*    -------------------------------------------------------------    */
#*    Ce fichier peut-etre interprete soit par `make' sur les machines */
#*    SUN soit par `gmake' sur toutes les autres machines.             */
#*---------------------------------------------------------------------*/

#*---------------------------------------------------------------------*/
#*     Les flags ...                                                   */
#*---------------------------------------------------------------------*/
BIGLOOLIBDIR	= `$(BIGLOO) -query | grep "\*lib-dir[ ]*\*" | sed 's/\*lib-dir\*[ ]*: //'`
MACH        	= `arch`
PWD         	= `pwd`
CC          	= gcc
VERSION		= 0.2
BIGLOO          = bigloo
CAMLOODIR	= /net/cornas/icsla2/serrano/ml/camloo
LIBDIR         	= $(CAMLOODIR)/lib/$(VERSION)
INCLUDE     	= -I$(LIBDIR) -I"$(BIGLOOLIBDIR)" -I$(CAMLOODIR)/runtime$(VERSION)/CAMLClib
HEAPNAME	= caml-unix-bigloo.heap
LIBNAME		= libbigloo_caml_unix_u.a
BEEP            = ../../tools/beep
SHELL           = /bin/csh
STDLIB		= "$(BIGLOOLIBDIR)"/camloo/$(VERSION)
DATE		= `date +%m-%d-%y`

#*---------------------------------------------------------------------*/
#*     Les suffixes ...                                                */
#*---------------------------------------------------------------------*/
.SUFFIXES:
.SUFFIXES: .ml .scm .c .S .o .ml .mli .zi .mlp

#*---------------------------------------------------------------------*/
#*    Les objects C de la librairie                                    */
#*---------------------------------------------------------------------*/
_OBJ_C		= accept.o access.o addrofstr.o alarm.o bind.o chdir.o \
                  chmod.o chown.o chroot.o close.o closedir.o          \
                  connect.o cst2constr.o cstringv.o dup.o dup2.o       \
                  envir.o errmsg.o execv.o execve.o execvp.o exit.o    \
                  fchmod.o fchown.o fcntl.o fork.o ftruncate.o         \
                  getegid.o getenv.o geteuid.o getgid.o getgr.o        \
                  getgroups.o gethost.o gethostname.o getlogin.o       \
                  getpid.o getppid.o getproto.o getpw.o getserv.o      \
                  getuid.o gmtime.o ioctl.o kill.o link.o listen.o     \
                  lockf.o lseek.o mkdir.o mkfifo.o nice.o open.o       \
                  opendir.o pause.o peek.o pipe.o poke.o read.o        \
                  readdir.o readlink.o rename.o rewinddir.o rmdir.o    \
                  select.o sendrecv.o setgid.o setuid.o shutdown.o     \
                  signal.o sleep.o socket.o socketaddr.o socketpair.o  \
                  stat.o strofaddr.o symlink.o termios.o time.o        \
                  times.o truncate.o umask.o unix.o unlink.o utimes.o  \
                  wait.o waitopt.o waitpid.o write.o

OBJ_C		= $(_OBJ_C:%=Clib/%)                  
O_OBJ_C     	= $(OBJ_C:%=$(O)/%)

#*---------------------------------------------------------------------*/
#*    Les objets des extansions                                        */
#*---------------------------------------------------------------------*/
_OBJ_LLIB	= unix.o

OBJ_LLIB	= $(_OBJ_LLIB:%=Llib/%)  
O_OBJ_LLIB	= $(OBJ_LLIB:%=$(O)/%)
C_OBJ_LLIB  	= $(OBJ_LLIB:%.o=$(O)/%.c)

#*---------------------------------------------------------------------*/
#*    Les objets de la librairie standard                              */
#*---------------------------------------------------------------------*/
_OBJ_MLIB	= 

OBJ_MLIB	= $(_OBJ_MLIB:%=Mlib/%)  
O_OBJ_MLIB	= $(OBJ_MLIB:%=$(O)/%)
SCM_OBJ_MLIB  	= $(OBJ_MLIB:%.o=%.ml)

#*---------------------------------------------------------------------*/
#*    Les fichiers interfaces de la librairie standard                 */
#*---------------------------------------------------------------------*/
OBJ_MLIB_MLI	= iunix.zi peek.zi poke.zi unix.zi

O_OBJ_MLIB_MLI	= $(OBJ_MLIB_MLI:%=Mlib/%)

#*---------------------------------------------------------------------*/
#*    La construction du `heap'                                        */
#*---------------------------------------------------------------------*/
heap:
	@ $(BIGLOO) Llib/unix.scm -mkheap +ALPHA -heap ../../lib/$(VERSION)/$(HEAPNAME)
	@ echo "Heap Done..."
	@ $(BEEP)
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    La librairie                                                     */
#*---------------------------------------------------------------------*/
lib: lib_u

#*---------------------------------------------------------------------*/
#*    La libarie `libbigloo_caml_u.a' (safe)                           */
#*---------------------------------------------------------------------*/
lib_s:  
	@ make blib BFLAGS="-O3 -mklib -cc $(CC) -fshared-data -cg -g -rm"\
                    MFLAGS="-rm -mklib -extend caml"                   \
                    CAMLFLAGS=""                                       \
	            CFLAGS="$(INCLUDE) -g"                             \
	            O=".Olib"                                          \
	            D="$(LIBNAME)"

#*---------------------------------------------------------------------*/
#*    La libarie `libbigloo_caml_u.a' (unsafe)                         */
#*---------------------------------------------------------------------*/
lib_u:  
	@ make blib BFLAGS="-O3 -mklib -cc $(CC) -fshared-data -rm"    \
                    MFLAGS="-rm -mklib -extend caml -O2"               \
                    CAMLFLAGS=""                                       \
	            CFLAGS="$(INCLUDE) -O"                             \
	            O=".Olib"                                          \
	            D="$(LIBNAME)"

#*---------------------------------------------------------------------*/
#*    install                                                          */
#*---------------------------------------------------------------------*/
install:
	@ ../../distribution/install.libunix
	@ echo "Libunix installed Done..."
	@ $(BEEP)
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    clean                                                            */
#*---------------------------------------------------------------------*/
clean:
	@ cp $(LIBDIR)/caml-bigloo.heap $(LIBDIR)/caml-bigloo.heap.$(DATE)
	@-\rm -f .Olib/Llib/*
	@-\rm -f .Olib/{Clib}/*
	@-\rm -f .Olib/Mlib/*
	@ echo "Cleanup Done..."
	@ $(BEEP)
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    blib                                                             */
#*---------------------------------------------------------------------*/
blib: $(O_OBJ_MLIB_MLI) $(O_OBJ_C) $(O_OBJ_LLIB) $(O_OBJ_MLIB)
	@ ar rcv $(LIBDIR)/$(D) $(O_OBJ_C) $(O_OBJ_LLIB) $(O_OBJ_MLIB)
	@ ranlib $(LIBDIR)/$(D)
	@ echo "$(D) Done..."
	@ $(BEEP)
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*     touchall ...                                                    */
#*---------------------------------------------------------------------*/
touchall:
	@ touch Llib/*.scm {Clib}/*.c Mlib/*.{ml,mli}
	@ echo "touchall done..."
	@ $(BEEP)
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    wc                                                               */
#*---------------------------------------------------------------------*/
wc:
	@ wc Llib/*.{scm,sch} {Clib}/*.c Include/*.h Mlib/*.ml
	@ echo "wc done..."
	@ $(BEEP)
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    La regle implicite `.scm.o'                                      */
#*---------------------------------------------------------------------*/
.Olib/%.o: %.scm
	@ $(BIGLOO) -copt "$(INCLUDE)" $(BFLAGS) $*.scm -o .Olib/$*.o -A

#*---------------------------------------------------------------------*/
#*    La regle implicite `.ml.o'                                       */
#*---------------------------------------------------------------------*/
.Olib/%.o: %.ml
	@ $(BIGLOO) -A -o .Olib/$*.o $*.ml $(MFLAGS)  

#*---------------------------------------------------------------------*/
#*    La regle implicite `.mli.zi'                                     */
#*---------------------------------------------------------------------*/
.mli.zi:
	$(BIGLOO) -A $(MFLAGS) $(CAMLFLAGS) -I Mlib $*.mli

#*---------------------------------------------------------------------*/
#*    La regle implicite `.c.o'                                        */
#*---------------------------------------------------------------------*/
$(O)/%.o: %.c
	@ echo "$*.c:"
	@ $(CC) $(CFLAGS) $*.c -o $(O)/$*.o -c

#*---------------------------------------------------------------------*/
#*    Les machins-trucs                                                */
#*---------------------------------------------------------------------*/
Mlib/iunix.zi: Mlib/unix.zi 
Mlib/unix.o: Mlib/unix.zi Mlib/iunix.zi 
