# Generated automatically from Makefile.in by configure.
#---- EXAMPLE SPECIFIC SECTION -------------------------------

GOALFUN		= evalProg
BINDTIMES	= ($$1,?)
TESTDATA-cint1	= power.c 2 15
SPECDATA-cint1	= power.c 
TESTDATA-cint2	= gcd.c 455 429
SPECDATA-cint2	= gcd.c 
TESTDATA-answr2	= gcd.c 455 429
SPECDATA-answr2	= gcd.c 
REPEAT		= 100000
CFLAGS		= -O3
CMIXFLAGS	= -s -q

#---- END OF EXAMPLE SPECIFIC SECTION ------------------------

RESGOALFUN	= "$(GOALFUN)_res"

prefix		= /usr/local
exec_prefix	= ${prefix}
CC		= gcc
CXX		= c++
CXXFLAGS	= -I $(CMIXINCLUDE) -L $(CMIXLIB)
YACC		= bison -y
LEX		= flex
CMIX		= cmix
CMIXINCLUDE 	= ${prefix}/include
CMIXLIB		= ${exec_prefix}/lib
MV		= mv -f
WC		= wc
SED		= sed
INDENT		= indent -br -ce
ECHON		= echo -n
ECHOC		= 
EXEEXT		= 

SHORTHOST	= $(HOST:.diku.dk=)
ifeq (x$(ARCH),x)
  ARCH		= i586-linux-gnu
endif

all:	timing1

clean:
	$(RM) *~ *.o *-gen.cc *-gen$(EXEEXT) *-res.c *-res$(EXEEXT) \
	*-time$(EXEEXT)	*-time.txt *-tab.c *-tab.h *-lex.c *.ann core

timing1:cint1-time.txt
	head -8 $<; tail -8 $<

timing2:cint2-time.txt
	head -8 $<; tail -8 $<

answer2: answr2-time.txt
	head -8 $<; tail -8 $<

.PRECIOUS: %-res.c
.PHONY:	clean all timing1 timing2 answer2

%-time.txt:	%-time %.o %-res.o
	@echo ============================================================ \
	> $*-time.txt
	@echo "Program $*.c on host $(SHORTHOST)," \
              "architecture $(ARCH):" >> $*-time.txt
	@echo "Compiler command is \`$(CC) $(CPPFLAGS) $(CFLAGS)'" \
	      >> $*-time.txt
	@echo "Input is \`$(TESTDATA-$*)'" >> $*-time.txt
	@echo "" >> $*-time.txt
	@$(ECHON) "Source   program size: "$(ECHOC) >> $*-time.txt
	@$(WC) -c $*.o | tee -a $*-time.txt
	@$(ECHON) "Residual program size: "$(ECHOC) >> $*-time.txt
	@$(WC) -c $*-res.o | tee -a $*-time.txt
	@echo "" >> $*-time.txt
	./$*-time $(REPEAT) $(TESTDATA-$*) >> $*-time.txt
	@echo ============================================================ \
	>> $*-time.txt

include construct.d
include cint1.d

%-lex.c: %-lex.l %.h %-par-tab.h
	$(LEX) -o$*-lex.c $<

cint:	cint.o cint-main.o cint-par-tab.o construct.o cint-lex.o
	$(CC) -o cint $(CPPFLAGS) $(CFLAGS) \
	cint.o cint-main.o cint-par-tab.o construct.o cint-lex.o

%-gen.cc %.ann: %.c cint.h
	$(CMIX) $(CMIXFLAGS) -e 'goal: $(GOALFUN)$(BINDTIMES) producing ($(RESGOALFUN))' $<

%-tab.c %-tab.h: %.y
	$(YACC) -d $*.y
	$(MV) y.tab.c $*-tab.c || $(MV) y_tab.c $*-tab.c
	$(MV) y.tab.h $*-tab.h || $(MV) y_tab.h $*-tab.h

%.d: %.c
	$(SHELL) -ec '$(CC) -MM $(CPPFLAGS) $< \
	| $(SED) '\''s/$*\\.o[ :]*/& $@/g'\'' > $@'

%.d: %.cc
	$(SHELL) -ec '$(CXX) -MM $(CXXFLAGS) $< \
	| $(SED) '\''s/$*\\.o[ :]*/& $@/g'\'' > $@'

%-gen: %-gen.cc cint-par-tab.o construct.o cint-lex.o spectimeerror.o
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $*-gen $^ -lcmix $(LOADLIBES)

spectimeerror.o: spectimeerror.c
	$(CC) -c $^

%-res.c: %-gen
	./$< $(SPECDATA-$*) | $(INDENT) > $*-res.c

%-res:	%-res.o %-res-main.o
	$(CC) -o $*-res $(LDFLAGS) $^ $(LOADLIBES)

%-time: cint-time.o %.o %-res.o construct.o nospectimeerror.o \
	cint-par-tab.o cint-lex.o
	$(CC) -o $*-time $(LDFLAGS) $^ $(LOADLIBES)

%-main: cint-main.o %.o construct.o nospectimeerror.o \
	cint-par-tab.o cint-lex.o
	$(CC) -o $*-main $(LDFLAGS) $^ $(LOADLIBES)
