# file: functionlang/semantic/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
SRC=main.p resolve.p typing.p
OBJ=main.o resolve.o typing.o
TEST=../../test
LIB=$(LIBDIR)/libidlP.a
SPECS=../../specs
IDLCFLAGSLOC=-s4 -I$(SPECS) -I.. -C semantic.Cdl

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

examples : semantic
	$(RM) $(TEST)/foo.semanticP.aer $(TEST)/foo.semanticP.log \
		$(TEST)/bar.semanticP.aer $(TEST)/bar.semanticP.log
	/bin/time semantic < $(TEST)/foo.syntaxP.aer > $(TEST)/foo.semanticP.aer
	/bin/time semantic < $(TEST)/bar.syntaxP.aer > $(TEST)/bar.semanticP.aer
	/bin/time $(BINDIR)/idlcheck -v -C semantic.Cdl \
		inputport $(TEST)/foo.syntaxP.aer \
		outputport $(TEST)/foo.semanticP.aer \
			2> $(TEST)/bar.semanticP.log
	/bin/time $(BINDIR)/idlcheck -v -C semantic.Cdl \
		inputport $(TEST)/bar.syntaxP.aer \
		outputport $(TEST)/bar.semanticP.aer \
			2> $(TEST)/bar.semanticP.log

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

main.o : main.p semantic.h
	$(PC) $(PFLAGS) -c main.p

resolve.o : resolve.p semantic.h
	$(PC) $(PFLAGS) -c resolve.p

typing.o : typing.p semantic.h
	$(PC) $(PFLAGS) -c typing.p

semantic.h : semantic.idl \
	$(SPECS)/functionsem.idl $(SPECS)/functionsyntax.idl ../sem.idl
	$(IDLC) $(IDLCFLAGS) $(IDLCFLAGSLOC) semantic.idl

Clean :
	$(RM) *.o semantic *.Cdl semantic.c semantic.h *.list
