home: hub: minipeg

ref: b3cf2bab3678f025284956be3c52f90ee919a67d
dir: /Makefile/

View raw version
DESTDIR	=
PREFIX	= /usr/local
BINDIR	= $(DESTDIR)$(PREFIX)/bin
MANDIR	= $(DESTDIR)$(PREFIX)/man/man1
CFLAGS = -g -O2 -Wall

SRC = tree.h compile.c tree.c peg.c
GENSRC = version.h minipeg-new.c peg.c www/index.html
OBJ = compile.o tree.o peg.o

all: minipeg

install: $(BINDIR)/minipeg $(MANDIR)/minipeg.1

$(BINDIR)/minipeg: minipeg
	cp $< $@

$(MANDIR)/minipeg.1: minipeg.1
	cp $< $@

$(MANDIR):
	mkdir -p $(MANDIR)

bootstrap-minipeg: minipeg.c
	$(CC) $(CFLAGS) -o $@ minipeg.c

peg.c: peg.peg bootstrap-minipeg
	./bootstrap-minipeg -o $@ peg.peg

%.o : %.c tree.h version.h
	$(CC) $(CFLAGS) -c -o $@ $<

minipeg: $(OBJ)
	$(CC) $(CFLAGS) -o $@ $(OBJ)

version.h:
	echo "#define MINIPEG_VERSION"\
	   "\"$(shell git describe --tags --always || date +%Y.%m.%d)\"" > version.h

minipeg-new.c: version.h $(SRC) amalg.sh
	sh amalg.sh version.h $(SRC) > $@

www/index.html: .FORCE
	sh ./www/index.html.sh > $@

%.c.noversion : %.c
	grep -v -e "^/\* Parser generated by minipeg " -e '#define MINIPEG_VERSION' $< > $@

# Check the bootstrap minipeg.c matches the built minipeg-new.c (without version info).
check-self-host: minipeg.c.noversion minipeg-new.c.noversion .FORCE
	diff -u minipeg.c.noversion minipeg-new.c.noversion

check: minipeg check-self-host .FORCE
	$(SHELL) -ec '(cd examples;  $(MAKE))'

clean : .FORCE
	rm -f minipeg bootstrap-minipeg rm *.c.noversion $(GENSRC) $(OBJ)
	$(SHELL) -ec '(cd examples;  $(MAKE) clean)'

.FORCE :