# /*-----------------------------------------------------------------------*/
# /* WAMCC                               INRIA Rocquencourt - CLoE Project */
# /*                                                           Daniel Diaz */
# /*                                                                       */
# /* Makefile (local compilation)                                          */
# /*-----------------------------------------------------------------------*/

# the following variables are given by ../Makefile at installation time

COMPILER  = wamcc
INCPATH   = `pwd`
LIBPATH   = `pwd`
CC        ?= gcc
WCC       = w_$(CC)


# other local variables

#CFLAGS    = -O2
CFLAGINLIN= -finline-functions
LFLAGS    =
BMF       = bmf_$(COMPILER)

OBJLIB    = machine.o wam_engine.o    atom_pred.o debugger.o hash.o malloc.o\
            builtin.o
           

OBJLIBPP  = machine.o wam_engine_pp.o atom_pred.o debugger.o hash.o malloc.o\
            builtin.o            

EXECS     = configure $(WCC) $(COMPILER) $(BMF) hex2pl pl2hex

all: $(WCC) lib$(COMPILER).a lib$(COMPILER)_pp.a $(BMF) hex2pl pl2hex $(COMPILER)


lib$(COMPILER).a: $(OBJLIB)
	-rm lib$(COMPILER).a 
	ar rc lib$(COMPILER).a $(OBJLIB)
	ranlib lib$(COMPILER).a

lib$(COMPILER)_pp.a: $(OBJLIBPP)
	-rm lib$(COMPILER)_pp.a 
	ar rc lib$(COMPILER)_pp.a $(OBJLIBPP)
	ranlib lib$(COMPILER)_pp.a



# objects


machine.o: machine.h archi.h wam_engine.h machine.c
	./$(WCC) $(CFLAGS) -c machine.c

wam_engine.o: machine.h archi.h wam_engine.h atom_pred.h wam_engine.c 
	./$(WCC) $(CFLAGS) -c wam_engine.c

wam_engine_pp.o: machine.h archi.h wam_engine.h atom_pred.h wam_engine.c
	./$(WCC) $(CFLAGS) -DWAM_PROFILE -c -o wam_engine_pp.o wam_engine.c

atom_pred.o: machine.h archi.h wam_engine.h atom_pred.h atom_pred.c
	./$(WCC) $(CFLAGS) -c atom_pred.c

debugger.o: machine.h archi.h wam_engine.h atom_pred.h debugger.c
	./$(WCC) $(CFLAGS) -c debugger.c

hash.o: machine.h hash.c
	./$(WCC) $(CFLAGS) -c hash.c




# execs

configure: configure.c machine.h ../Makefile
	$(CC) $(CFLAGS) $(LFLAGS) -DCOMPILER='"'$(COMPILER)'"' \
		-DCC='"'$(CC)'"' -DWCC='"'$(WCC)'"' \
                -DINCPATH='"'$(INCPATH)'"' -DLIBPATH='"'$(LIBPATH)'"' \
                -o configure configure.c


$(WCC): configure archi.def
	./configure
	chmod a+x $(WCC)

$(BMF): bmf.c
	$(CC) $(CFLAGS) $(LFLAGS)  \
		-DCOMPILER='"'$(COMPILER)'"' -DWCC='"'$(WCC)'"' \
		-o $(BMF) bmf.c


hex2pl: hex2pl.c
	$(CC) $(CFLAGS) $(LFLAGS) -o hex2pl hex2pl.c

pl2hex: pl2hex.c
	$(CC) $(CFLAGS) $(LFLAGS) -o pl2hex pl2hex.c

$(COMPILER):
	./$(WCC) $(CFLAGS) -c wamcc*.c
	./$(WCC) $(CFLAGS) $(LFLAGS) -s -o $(COMPILER) wamcc*.o -l$(COMPILER)



sics_comp:
	{ echo "[b], c, asserta((compiler_name($(COMPILER)):-!)). "; \
	  echo "save('s_$(COMPILER)'), go. "; \
	}  | sicstus_native


# clean

clean:
	-rm *.o
	-rm *.a
	-rm $(EXECS)


syntax highlighted by Code2HTML, v. 0.9.1