# Change these if you need to.
BINDIR =	/usr/local/bin
LIBDIR =	/usr/local/lib
MANDIR =	/usr/local/man

# If you need to change this to gcc or pcc or whatever, go ahead.
CC =		cc

# Uncommenting NO_LEAKFINDER makes the program *not* check for memory leaks.
# The default, once leakfinder is installed, is to check.
#NO_LEAKFINDER =	-DNO_LEAKFINDER

# Most of these compiler flags are for adding extra checks. If your
# compiler doesn't support them, feel free to get rid of them.
CFLAGS =	-O -g -ansi -pedantic -U__STRICT_ANSI__ -D_GNU_SOURCE -Wall -Wpointer-arith -Wshadow -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wno-long-long -Wno-cast-qual -Wno-c11-extensions $(DEBUG) $(NO_LEAKFINDER)

LDFLAGS =	-g

all:		lmin

lmin:		lmin.c version.h liblmin.h liblmin.a leakfinder.h 
	$(CC) $(CFLAGS) lmin.c $(LDFLAGS) -L. -llmin -lm -o lmin

examples:	examples.c liblmin.h liblmin.a
	$(CC) $(CFLAGS) examples.c $(LDFLAGS) -L. -llmin -lm -o examples

liblmin.a:	liblmin.o leakfinder.o
	ar rc liblmin.a liblmin.o leakfinder.o

liblmin.o:	liblmin.c liblmin.h builtins.h
	$(CC) $(CFLAGS) -c liblmin.c

leakfinder.o:	leakfinder.c leakfinder.h
	$(CC) $(CFLAGS) -c leakfinder.c

builtins.h:	builtins.lisp txt_to_h
	./txt_to_h builtins.lisp > builtins.h

test:	lmin
	./lmin test.lisp

clean:
	rm -f lmin builtins.h *.o *.a core core.* *.core

install:	all
	rm -f $(BINDIR)/lmin $(BINDIR)/lminsh
	-mkdir -p $(BINDIR)
	cp lmin lminsh $(BINDIR)
	rm -f $(LIBDIR)/liblmin.a
	-mkdir -p $(LIBDIR)
	cp liblmin.a $(LIBDIR)
	rm -f $(MANDIR)/man1/lmin.1 $(MANDIR)/man1/lminsh.1
	-mkdir -p $(MANDIR)/man1
	cp lmin.1 lminsh.1 $(MANDIR)/man1
	rm -f $(MANDIR)/man3/liblmin.3
	-mkdir -p $(MANDIR)/man3
	cp liblmin.3 $(MANDIR)/man3

tar:
	@name=`sed -n -e '/#define LMIN_VERSION /!d' -e 's/.* "/lmin-/' -e 's/ .*//p' version.h` ; \
	  rm -rf $$name ; \
	  mkdir $$name ; \
	  tar cf - `cat FILES` | ( cd $$name ; tar xfBp - ) ; \
	  chmod 644 $$name/Makefile ; \
	  tar cf $$name.tar $$name ; \
	  rm -rf $$name ; \
	  gzip $$name.tar
