# file: doc/examples/functionlang/constantfold/C/Makefile

# IMPORTED VARIABLES
LIBDIR=/usr/local/scorpion/lib
INCDIR=/usr/local/scorpion/include
BINDIR=/usr/local/scorpion/bin
CC=cc
IDLC=$(BINDIR)/idlc
PC=pc
CFLAGS=-I$(INCDIR)/C
IDLCFLAGS=-v
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.c algorithm.c
OBJ=main.o algorithm.o constant_fold.o
TEST=../../test
LIB=$(LIBDIR)/libidl.a
SPECS=../../specs
IDLCFLAGSLOC=-I$(SPECS) -I.. -C constant_fold.Cdl

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

example: constant_fold
	$(RM) $(TEST)/foo.foldedC.aer $(TEST)/foo.foldedC.log \
		$(TEST)/bar.foldedC.aer $(TEST)/bar.foldedC.log
	/bin/time constant_fold < $(TEST)/foo.semanticC.aer > $(TEST)/foo.foldedC.aer
	/bin/time constant_fold < $(TEST)/bar.semanticC.aer > $(TEST)/bar.foldedC.aer
	/bin/time $(BINDIR)/idlcheck -v -C constant_fold.Cdl \
		inputport $(TEST)/foo.semanticC.aer \
		outputport $(TEST)/foo.foldedC.aer 2> $(TEST)/foo.foldedC.log
	/bin/time $(BINDIR)/idlcheck -v -C constant_fold.Cdl \
		inputport $(TEST)/bar.semanticC.aer \
		outputport $(TEST)/bar.foldedC.aer 2> $(TEST)/bar.foldedC.log

constant_fold : $(OBJ) $(LIB)
	$(CC) $(CFLAGS) -o constant_fold $(OBJ) $(LIB)

.c.o:
	$(CC) $(CFLAGS) -c $*.c

main.o : main.c constant_fold.h
algorithm.o : algorithm.c constant_fold.h 

constant_fold.o constant_fold.h : constant_fold.idl ../cf.idl \
	$(SPECS)/functionsem.idl $(SPECS)/functionsyntax.idl
	$(IDLC) $(IDLCFLAGS) $(IDLCFLAGSLOC)  constant_fold.idl
#	$(IDLC) $(IDLCFLAGS) -m $(IDLCFLAGSLOC) constant_fold.idl

Clean:
	$(RM) *.o constant_fold *.Cdl constant_fold. cconstant_fold.h \
		*.list a.out *~
