#*=====================================================================*/
#*    serrano/ml/camloo/comptime0.2/Makefile ...                       */
#*    -------------------------------------------------------------    */
#*    Author      :  Manuel Serrano                                    */
#*    Creation    :  Thu Jan 27 11:05:52 1994                          */
#*    Last change :  Thu Jun  2 13:47:47 1994 (serrano)                */
#*    -------------------------------------------------------------    */
#*    Le make pour construire le front-end `camloo'                    */
#*=====================================================================*/

#*---------------------------------------------------------------------*/
#*    Les repertoires                                                  */
#*---------------------------------------------------------------------*/
VERSION		= 0.2
PWD		= /net/cornas/icsla2/serrano/ml/camloo/comptime$(VERSION)
CAMLOODIR	= $(PWD)/..
TOOLSDIR	= $(CAMLOODIR)/Tools
RUNTIMEDIR	= $(CAMLOODIR)/runtime$(VERSION)
COMPTIMEDIR	= $(CAMLOODIR)/comptime$(VERSION)
AFILE		= $(PWD)/.afile
BINDIR		= $(PWD)/../bin
BEEP		= beep
CAML		= caml
RM		= \rm -f

#*---------------------------------------------------------------------*/
#*    Les flags & et les compilos                                      */
#*---------------------------------------------------------------------*/
BIGLOO		= bigloo1.6
CAMLOODEST	= $(BINDIR)/camloo2
CAMLCDEST	= $(BINDIR)/camloo1
CC		= gcc
MKLIBLIST	= $(TOOLSDIR)/mkliblist
BFLAGS		= -O3 -fshared-data -q -rm -afile $(AFILE) -cc $(CC)   \
                  -g -w -copt -I$(CAMLOODIR)/runtime$(VERSION)/Include
MFLAGS		= -O2 -q -rm -cc $(CC) -unsafe -cc $(CC)            \
                  -w -copt -I$(CAMLOODIR)/runtime$(VERSION)/Include \
                  -extend $(CAML)

#*---------------------------------------------------------------------*/
#*    Les objets de `Camloo'                                           */
#*---------------------------------------------------------------------*/
CAMLOO_OBJ_FILE	= init.o misc.o llambda.o generate.o module.o lprim.o \
                  var.o lconst.o file.o lswitch.o ldefine.o liblist.o \
                  main.o ref.o

CAMLOO_OBJ	= $(CAMLOO_OBJ_FILE:%=Camloo/%)
CAMLOO_SOURCES	= $(CAMLOO_OBJ:%.o=%.scm)

#*---------------------------------------------------------------------*/
#*    Les objets de `Camlc'                                            */
#*---------------------------------------------------------------------*/
CAMLC_OBJ_FILE	= config.o config.zi location.zi misc.o const.o       \
                  prim.o instruct.o lambda.o globals.o location.o     \
                  syntax.o errors.o modules.o pr_type.zi              \
                  builtins.o types.o pr_type.o ty_error.o typing.o    \
                  ty_decl.o pr_decl.o ty_intf.o tr_env.o match.o      \
                  trstream.o front.o back.o opcodes.o prim_opc.o      \
                  buffcode.o labels.o reloc.o emitcode.o emit_phr.o   \
                  primdecl.o lexer.zi lexer.o parser.zi par_aux.o     \
                  parser.o compiler.o lam.o dump.o version.o main.o

CAMLC_OBJ	= $(CAMLC_OBJ_FILE)
CAMLC_SOURCES	= $(CAMLC_OBJ:%.o=%.ml)
CAMLC_LINK_OBJ	= $(CAMLC_OBJ_FILE:%.zi=)

#*---------------------------------------------------------------------*/
#*    camloo                                                           */
#*---------------------------------------------------------------------*/
camloo: $(CAMLOO_OBJ)
	@ $(BIGLOO) $(BFLAGS) $(CAMLOO_OBJ) $(RUNTIMEDIR)/.Olib/Llib/constr.o \
          -o $(CAMLOODEST) 
	@ echo "camloo done ..."
	@ $(BEEP)
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    camlc                                                            */
#*---------------------------------------------------------------------*/
camlc: 
	@ (cd Camlc; $(MAKE) -f ../Makefile camlc-camlc)
	@ echo "camlc done ..."
	@ $(BEEP)
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    camlc-camlc                                                      */
#*---------------------------------------------------------------------*/
camlc-camlc: $(CAMLC_OBJ) 
	$(BIGLOO) $(CAMLC_LINK_OBJ) -o $(CAMLCDEST) $(MFLAGS)

#*---------------------------------------------------------------------*/
#*    clean                                                            */
#*---------------------------------------------------------------------*/
clean:
	@ $(MAKE) clean-camlc
	@ $(MAKE) clean-camloo

#*---------------------------------------------------------------------*/
#*    clean-camlc                                                      */
#*---------------------------------------------------------------------*/
clean-camlc:
	@- $(RM) Camlc/*.c
	@- $(RM) Camlc/*.o
	@- $(RM) Camlc/*.sc*
	@- $(RM) Camlc/*.z*
	
#*---------------------------------------------------------------------*/
#*    clean-camloo                                                     */
#*---------------------------------------------------------------------*/
clean-camloo:
	@- $(RM) Camloo/*.c
	@- $(RM) Camloo/*.o

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

#*---------------------------------------------------------------------*/
#*     .scm --> .o                                                     */
#*---------------------------------------------------------------------*/
.scm.o:
	@ $(BIGLOO) -A -o $*.o $(BFLAGS) $*.scm 

#*---------------------------------------------------------------------*/
#*     .ml --> .o                                                      */
#*---------------------------------------------------------------------*/
.ml.o:
	@ $(BIGLOO) -A  -o $*.o $(MFLAGS) $*.ml

#*---------------------------------------------------------------------*/
#*     .mli --> .zi                                                    */
#*---------------------------------------------------------------------*/
.mli.zi:
	@ $(BIGLOO) -A $(MFLAGS) $<

#*---------------------------------------------------------------------*/
#*    liblist.scm                                                      */
#*---------------------------------------------------------------------*/
$(COMPTIMEDIR)/Camloo/liblist.scm: $(RUNTIMEDIR)/Llib/make-lib.scm
	@ $(TOOLSDIR) mkliblist -q > ! $(COMPTIMEDIR)/Camloo/liblist.scm

#*---------------------------------------------------------------------*/
#*    afile                                                            */
#*---------------------------------------------------------------------*/
afile:
	@ echo "   - .afile"
	@ afile -o $(AFILE) $(CAMLOO_SOURCES)
	@ echo "   - .etags"
	@ $(MAKE) tags
	@ echo "   - dep"
	@ $(MAKE) dep

#*---------------------------------------------------------------------*/
#*    tags                                                             */
#*---------------------------------------------------------------------*/
tags:
	@ etags $(CAMLOO_SOURCES) -o .etags

#*---------------------------------------------------------------------*/
#*    dep                                                              */
#*---------------------------------------------------------------------*/
dep:
	@ - head -`grep -n \^#depend Makefile | awk -F: '{ print $$1}' -` Makefile > /tmp/Makefile.aux
	@ scmdep $(CAMLOO_SOURCES) >> /tmp/Makefile.aux
	@ mv /tmp/Makefile.aux Makefile

#*---------------------------------------------------------------------*/
#*    Les trucs de caml-light                                          */
#*---------------------------------------------------------------------*/
### EVERYTHING THAT GOES BEYOND THIS COMMENT IS GENERATED
### DO NOT DELETE THIS LINE
lexer.zi: parser.zi 
parser.zi: syntax.o 
pr_type.zi: globals.o 
back.o: prim.o lambda.o const.o misc.o instruct.o 
buffcode.o: misc.o config.zi opcodes.o 
builtins.o: misc.o modules.o globals.o const.o 
compiler.o: pr_decl.o typing.o parser.zi modules.o location.zi const.o \
    emit_phr.o misc.o back.o front.o ty_intf.o syntax.o instruct.o \
    ty_decl.o lexer.zi ty_error.o globals.o builtins.o types.o 
config.o: config.zi 
const.o: misc.o 
emit_phr.o: reloc.o emitcode.o buffcode.o instruct.o labels.o 
emitcode.o: prim.o reloc.o prim_opc.o config.zi labels.o const.o \
    misc.o instruct.o buffcode.o opcodes.o 
errors.o: misc.o location.zi globals.o const.o 
front.o: trstream.o prim.o lambda.o tr_env.o modules.o location.zi \
    const.o misc.o match.o syntax.o ty_error.o globals.o builtins.o 
globals.o: prim.o const.o 
instruct.o: prim.o const.o globals.o
labels.o: misc.o buffcode.o instruct.o 
lambda.o: prim.o instruct.o const.o globals.o
lexer.o: lexer.zi misc.o parser.zi 
location.o: location.zi misc.o config.zi 
main.o: modules.o config.zi compiler.o misc.o version.o 
match.o: prim.o lambda.o location.zi const.o misc.o syntax.o \
    instruct.o globals.o 
misc.o: config.zi 
modules.o: misc.o errors.o globals.o const.o 
par_aux.o: misc.o errors.o syntax.o modules.o location.zi builtins.o \
    globals.o const.o 
parser.o: parser.zi primdecl.o par_aux.o typing.o syntax.o builtins.o \
    globals.o types.o const.o 
pr_decl.o: misc.o pr_type.zi globals.o const.o 
pr_type.o: pr_type.zi misc.o modules.o builtins.o globals.o types.o \
    const.o 
prim.o: const.o 
prim_opc.o: misc.o prim.o opcodes.o 
primdecl.o: prim.o globals.o 
reloc.o: buffcode.o const.o 
syntax.o: location.zi globals.o const.o 
tr_env.o: misc.o prim.o lambda.o syntax.o ty_error.o globals.o \
    const.o 
trstream.o: prim.o lambda.o tr_env.o const.o misc.o match.o \
    syntax.o 
ty_decl.o: misc.o typing.o syntax.o modules.o location.zi ty_error.o \
    builtins.o globals.o types.o const.o 
ty_error.o: misc.o syntax.o errors.o pr_type.zi location.zi globals.o \
    types.o const.o 
ty_intf.o: misc.o ty_decl.o modules.o ty_error.o globals.o types.o \
    const.o 
types.o: misc.o modules.o builtins.o globals.o const.o 
typing.o: misc.o errors.o syntax.o location.zi modules.o ty_error.o \
    builtins.o globals.o types.o const.o 

#*---------------------------------------------------------------------*/
#*    Les dependances                                                  */
#*---------------------------------------------------------------------*/
#depend
Camloo/ldefine.o: Camloo/var.sch
Camloo/lswitch.o: Camloo/trace.sch
Camloo/lconst.o: Camloo/var.sch
Camloo/var.o: Camloo/var.sch
Camloo/lprim.o: Camloo/var.sch
Camloo/generate.o: Camloo/var.sch
Camloo/llambda.o: Camloo/trace.sch Camloo/var.sch
Camloo/misc.o: Camloo/var.sch

