#
# Productions for the INTERCAL distribution
#
VERSION=0.24

# Common prefix for machine-independent installed files.
prefix = /usr/local
# Common prefix for machine-dependent installed files.
exec_prefix = ${prefix}

# Directory in which to install binaries.
bindir = ${exec_prefix}/bin
# Directory in which to install libraries.
libdir = ${exec_prefix}/lib
# Directory to install data files.
datadir = ${prefix}/share/intercal-0.24
# Directory to install the include files in.
incdir = ${prefix}/include/intercal-0.24

# Program to install binaries
INSTALL_PROGRAM = ${INSTALL}
# Program to install the man page.
INSTALL_DATA = ${INSTALL} -m 644
# Generic install program.
INSTALL = /usr/bin/install -c

# This can be overridden from the command line
DESTDIR=

CC = gcc
CFLAGS = -g -O2 -DICKINCLUDEDIR=\"$(incdir)\" -DICKLIBDIR=\"$(datadir)\" -DYYDEBUG
LDFLAGS = 
LEX = flex
LEXFLAGS=
YACC = bison -y
YACCFLAGS = -d # -t

LOADLIBS =  @INTLLIBS@ -lfl

CSOURCES = ick.y lexer.l feh.c lose.c fiddle.c perpetrate.c
ISOURCES = cesspool.c arrgghh.c ick-wrap.c numerals.c
HEADERS = ick.h lose.h sizes.h abcess.h fiddle.h feh.h
BUILD = Makefile.in Makefile configure.ac configure config.h.in intercal.spec.in intercal.spec install.sh
MISC = intercal.el
DOCS = BUGS COPYING NEWS README
SOURCES = $(CSOURCES) $(ISOURCES) $(HEADERS) $(BUILD) $(MISC) $(DOCS) pit doc

all: ick libick.a

ick: ick.o lexer.o feh.o lose.o fiddle.o perpetrate.o
	$(CC) perpetrate.o ick.o lexer.o feh.o lose.o fiddle.o $(LDFLAGS) -o ick

y.tab.h ick.c: ick.y ick.h sizes.h feh.h lose.h
	$(YACC) -d $(YACCFLAGS) ick.y
	mv y.tab.c ick.c

lexer.c: lexer.l ick.h lose.h
	$(LEX) $(LEXFLAGS) lexer.l
	mv lex.yy.c lexer.c 

# Uncomment the following if using a stock lex
# LEXLIBS = -ll
lextest: y.tab.h lexer.c ick.h lose.o
	$(CC) -DMAIN lexer.c lose.o $(LEXLIBS) -o lextest

ick.o: ick.c ick.h feh.h lose.h sizes.h
lexer.o: lexer.c y.tab.h ick.h lose.h
feh.o: feh.c feh.h y.tab.h ick.h fiddle.h lose.h sizes.h
perpetrate.o: perpetrate.c y.tab.h ick.h lose.h sizes.h
cesspool.o: cesspool.c numerals.c abcess.h lose.h sizes.h
lose.o: lose.h
fiddle.o: fiddle.h sizes.h

libick.a: cesspool.o lose.o fiddle.o arrgghh.o
	ar cr libick.a cesspool.o lose.o fiddle.o arrgghh.o
	-ranlib libick.a

install: all
	cp ick $(DESTDIR)$(bindir)
	cp libick.a $(DESTDIR)$(libdir)
	-mkdir -p $(DESTDIR)$(incdir)
	cp lose.h abcess.h fiddle.h $(DESTDIR)$(incdir)
	-mkdir $(DESTDIR)$(datadir)
	(cp -r pit $(DESTDIR)$(datadir))
	cp ick-wrap.c $(DESTDIR)$(datadir)

uninstall:
	rm -f $(DESTDIR)$(bindir)/ick $(DESTDIR)$(libdir)/libick.a
	rm -fr $(DESTDIR)$(incdir) $(DESTDIR)$(datadir)

TAGS: $(SOURCES)
	etags $(SOURCES)

dist: intercal-0.24.tar.gz

intercal-0.24.tar.gz: $(SOURCES)
	@find $(SOURCES) -type f -print | grep -v RCS | sed s:^:intercal-0.24/: >MANIFEST
	@(cd ..; ln -s intercal intercal-0.24)
	(cd ..; tar -czvf intercal/intercal-0.24.tar.gz `cat intercal/MANIFEST`)
	@(cd ..; rm intercal-0.24)

clean:
	rm -f yacc.* y.tab.* y.output *~ *.[oa] lexer.c ick.c lextest ick
	rm -f intercal-0.24.tar.gz intercal.spec

