# standard makefile for RSL type checker
# intended to be input by makefile for specific architecture,
# directories and tools
#
# 5 February 1998, raise@iist.unu.edu

# source files

TOKENS = filename.t eofile.t nextunit.t char_lit.t id.t int_lit.t real_lit.t text_lit.t
GENTLE_C = ast.c env.c ext.c print.c grammar.c objects.c types.c\
values.c cc.c pp.c cpp.c c_ast.c c_unparse.c c_decl.c sml.c\
pvs_ast.c pvs_aux.c pvs_col_sort.c pvs_gen_ast.c pvs_gen_code.c pvs.c



GENTLE_O = $(GENTLE_C:%.c=%.o)
C_O = errmsg.o files.o idents.o strings.o ccgen.o main.o pos.o
OBJECTS = $(GENTLE_O) $(GEN_TAB).o $(LEX_YY).o $(C_O) $(GRTS)

# rules

all: $(PGM)

$(PGM): $(OBJECTS)
	$(CC) $(LDFLAGS) -o $(PGM) $(OBJECTS)

files.o:
	$(CC) $(CFLAGS) $(FILES_FLAGS) -c files.c

%.c : %.g
	$(GENTLE) $<

gen.l: $(TOKENS) $(BLOCKS) grammar.c
	$(REFLEX)

$(LEX_YY).c: gen.l
	$(LEX) gen.l

$(GEN_TAB).c: grammar.c
	$(YACC) gen.y

$(BLOCKS):
	ln -s comments.b COMMENTS.b
	ln -s lexdef.b LEXDEF.b
	ln -s lexfunc.b LEXFUNC.b
	ln -s litblock.b LITBLOCK.b

clean:
	$(RM_CMD) *.o
	$(RM_CMD) ast.c
	$(RM_CMD) env.c
	$(RM_CMD) ext.c
	$(RM_CMD) print.c
	$(RM_CMD) grammar.c
	$(RM_CMD) objects.c
	$(RM_CMD) types.c
	$(RM_CMD) values.c
	$(RM_CMD) cc.c
	$(RM_CMD) pp.c
	$(RM_CMD) cpp.c
	$(RM_CMD) c_ast.c
	$(RM_CMD) c_unparse.c
	$(RM_CMD) c_decl.c
	$(RM_CMD) sml.c
	$(RM_CMD) pvs_ast.c 
	$(RM_CMD) pvs_aux.c 
	$(RM_CMD) pvs_col_sort.c 
	$(RM_CMD) pvs_gen_ast.c
	$(RM_CMD) pvs_gen_code.c
	$(RM_CMD) pvs.c
	$(RM_CMD) gen.*
	$(RM_CMD) $(LEX_YY).c

# dependencies

ast.o: ast.c
env.o: env.c
ext.o: ext.c
print.o: print.c
grammar.o: grammar.c
objects.o: objects.c
types.o: types.c
values.o: values.c
cc.o: cc.c
pp.o: pp.c
cpp.o: cpp.c
c_ast.o: c_ast.c
c_unparse.o: c_unparse.c
c_decl.o: c_decl.c
sml.o: sml.c
pvs_ast.o: pvs_ast.c
pvs_aux.o: pvs_aux.c
pvs_col_sort.o: pvs_col_sort.c
pvs_gen_ast.o: pvs_gen_ast.c
pvs_gen_code.o: pvs_gen_code.c
pvs.o: pvs.c

errmsg.o: errmsg.c errmsg.h idents.h files.h pos.h
files.o: files.c files.h idents.h errmsg.h pos.h
idents.o: idents.c idents.h
strings.o: strings.c
pos.o: pos.c pos.h files.h idents.h errmsg.h
ccgen.o: ccgen.c
main.o: main.c files.h idents.h errmsg.h


