# file: doc/examples/functionlang/frontend/Pascal/Makefile

# IMPORTED VARIABLES
LIBDIR=/usr/local/scorpion/lib
BINDIR=/usr/local/scorpion/bin
CC=cc
IDLC=$(BINDIR)/idlc
PC=pc
CFLAGS=-I$(INCDIR)/C
IDLCFLAGS=
PFLAGS=
CP=cp
MV=mv
RM=rm -f
LEX=lex
MAKE=make
YACC=yacc
UTILITYVARS='CC=$(CC)' 'IDLC=$(IDLC)' 'PC=$(PC)' 'CFLAGS=$(CFLAGS)' \
	      'IDLCFLAGS=$(IDLCFLAGS)' 'PFLAGS=$(PFLAGS)' 'CP=$(CP)' \
	      'MV=$(MV)' 'RM=$(RM)' 'LEX=$(LEX)' 'MAKE=$(MAKE)' \
	      'YACC=$(YACC)'
CI=ci
CO=co -l

# LOCAL VARIABLES
LIB=$(LIBDIR)/libidlP.a
SPECS=../../specs
LEXER=../lex
TEST=../../test
IDLCFLAGSLOC=-s4 -I$(SPECS) -I.. -pf "-I$(SPECS)" -C frontend.Cdl
SRC=main.p
OBJ=main.o 

###########################################################

example: frontend
	$(RM) $(TEST)/foo.syntaxP.aer $(TEST)/foo.syntaxP.aer \
		$(TEST)/bar.syntaxP.aer $(TEST)/bar.syntaxP.log
	/bin/time frontend < $(TEST)/foo.in > $(TEST)/foo.syntaxP.aer
	/bin/time frontend < $(TEST)/bar.in > $(TEST)/bar.syntaxP.aer
	/bin/time $(BINDIR)/idlcheck -v -C frontend.Cdl \
		ParseTreeOut $(TEST)/foo.syntaxP.aer 2> $(TEST)/foo.syntaxP.log
	/bin/time $(BINDIR)/idlcheck -v -C frontend.Cdl \
		ParseTreeOut $(TEST)/bar.syntaxP.aer 2> $(TEST)/bar.syntaxP.log

frontend : $(OBJ) $(LIB)
	$(PC) $(PFLAGS) $(OBJ) frontend.o $(LIB) -o frontend

main.o : main.p lexical.i syntactic.i $(SPECS)/posPconverts.p frontend.h
	$(RM) posPconverts.i
	ln -s $(SPECS)/posPconverts.p posPconverts.i
	$(PC) $(PFLAGS) -I$(SPECS) -c main.p

frontend.h : frontend.idl \
		$(SPECS)/functionsyntax.idl $(SPECS)/pos.idl ../fe.idl
	$(RM) sourceposition.i
	ln -s $(SPECS)/sourceposition.i sourceposition.i
	$(IDLC) $(IDLCFLAGS) $(IDLCFLAGSLOC) frontend.idl

Clean:
	$(RM) *.o frontend frontend.h frontend.Cdl *.list \
		sourceposition.i posPconverts.i
