AR_FLAGS = rc
CFLAGS = -Wall
LIB = libppf.a

ifndef RANLIB
RANLIB = ranlib
endif


all: $(LIB) try
LIBOBJS = parseppf.o writeppf.o ppfmachine.o patelppfmodes.o


parseppf.o: parseppf.c  ppf.h  ppf_internal.h  ppf_tables.h
	$(CC) $(CFLAGS) -c -o parseppf.o parseppf.c

writeppf.o: writeppf.c ppf.h
	$(CC) $(CFLAGS) -c -o writeppf.o writeppf.c

ppfmachine.o: ppfmachine.c ppf.h
	$(CC) $(CFLAGS) -c -o ppfmachine.o ppfmachine.c

patelppfmodes.o: patelppfmodes.c ppf.h
	$(CC) $(CFLAGS) -c -o patelppfmodes.o patelppfmodes.c


try.o: try.c ppf.h patelppfmodes.h
	$(CC) $(CFLAGS) -c -o try.o try.c

ppf_tables.h: mkStateTables.pl PPF.dfa
	@echo --------------------------------------------------------------------------------
	@echo Recreating libPPF parser state tables, ppf_tables.h
	@echo --------------------------------------------------------------------------------
	./mkStateTables.pl
	@echo --------------------------------------------------------------------------------
	@echo


$(LIB): $(LIBOBJS)
	@echo --------------------------------------------------------------------------------
	@echo Building static library, $(LIB)
	@echo --------------------------------------------------------------------------------
	$(RM) $(LIB)
	$(AR) $(AR_FLAGS) $(LIB) $(LIBOBJS)
	$(RANLIB) $(LIB)
	@echo Done.
	@echo --------------------------------------------------------------------------------

try: try.o $(LIB)
	$(CC) -o try try.o -L. -lppf


clean:
	@echo Making clean...
	$(RM) $(LIB) $(LIBOBJS) ppf_tables.h try.o try
#ppf_tables.h is *big* and autogenerated.

#end
