CFLAGS = -g -Wall $(OFLAGS) $(XFLAGS)
OFLAGS = -O3 -DNDEBUG
#OFLAGS = -pg

OBJS = tree.o compile.o

ifeq ($(OS),Windows_NT)
EXE=.exe
else
EXE=
endif

all : peg$(EXE) leg$(EXE)

peg$(EXE) : peg.o $(OBJS)
	$(CC) $(CFLAGS) -o peg-new peg.o $(OBJS)
	mv -f peg-new$(EXE) $@

leg$(EXE) : leg.o $(OBJS)
	$(CC) $(CFLAGS) -o leg-new leg.o $(OBJS)
	mv -f leg-new$(EXE) $@

ROOT	=
PREFIX	= /usr/local
BINDIR	= $(ROOT)$(PREFIX)/bin

install : $(BINDIR)/peg$(EXE) $(BINDIR)/leg$(EXE)

$(BINDIR)/% : %
	cp -p $< $@
	strip $@

uninstall : .FORCE
	rm -f $(BINDIR)/peg$(EXE)
	rm -f $(BINDIR)/leg$(EXE)

peg.o : peg.c peg.peg-c

%.peg-c : %.peg
#	./peg -o $@ $<

leg.o : leg.c

leg.c : leg.leg
#	./leg -o $@ $<

check : peg$(EXE) .FORCE
	./peg < peg.peg > peg.out
	diff peg.peg-c peg.out
	rm peg.out

test examples : .FORCE
	$(SHELL) -ec '(cd examples;  $(MAKE))'

clean : .FORCE
	rm -f *~ *.o *.peg.[cd] *.leg.[cd]
	$(SHELL) -ec '(cd examples;  $(MAKE) $@)'

spotless : clean .FORCE
	rm -f peg$(EXE)
	rm -f leg$(EXE)
	$(SHELL) -ec '(cd examples;  $(MAKE) $@)'

.FORCE :
