
# Makefile for the INTERCAL compiler

# Set BINDIR, INCDIR, LIBDIR to the locations where you want "make install"
# to install the executable, include files, and library for the compiler.
# The compiler will look there for the stuff it needs when you compile
# INTERCAL programs.  INCDIR and LIBDIR can be this directory if you don't
# want to "make install", e.g., if you don't trust makefiles moving stuff
# all over creation behind your back.
# (/dev/null may be another good choice :-)

DVMT=/usr2/eric/intercal

BINDIR = $(DVMT)/bin
INCDIR = $(DVMT)/lib/intercal
LIBDIR = $(DVMT)/lib/intercal
#INCDIR = $(PWD)
#LIBDIR = $(PWD)

# To cope with BSD's losing linker, comment the next line out
NR	= @echo "Real UNIXes don't need "

YDEBUG = -v
SYSTYPE = -DATT		# -DBSD for Berkelian systems
#DEBUG	= -g -DDEBUG
CFLAGS = -I. $(SYSTYPE) -O $(DEBUG) -DICKINCLUDEDIR=\"$(INCDIR)\" \
	-DICKLIBDIR=\"$(LIBDIR)\" -DYYDEBUG
LDFLAGS =

CSOURCES = ick.y lexer.l feh.c lose.c fiddle.c perpetrate.c
ISOURCES = cesspool.c arrgghh.c ick-wrap.c
HEADERS = ick.h lose.h sizes.h
SOURCES = $(CSOURCES) $(ISOURCES) $(HEADERS)

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
	yacc -d $(YDEBUG) ick.y
	mv y.tab.c ick.c

lextest: y.tab.h lexer.c ick.h
	$(CC) -DMAIN lexer.c -ll -o lextest

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

libick.a: cesspool.o lose.o fiddle.o arrgghh.o
	ar cr libick.a cesspool.o lose.o fiddle.o arrgghh.o
	$(NR) ranlib libick.a

install: all
	cp ick $(BINDIR)
	cp cesspool.h ick-wrap.c $(INCDIR)
	cp libick.a $(LIBDIR)
	$(NR) ranlib $(LIBDIR)/libick.a

clean:
	rm -f yacc.* y.tab.* y.output *~ *.[oa] lexer.c ick.c lextest ick

TAGS: $(SOURCES)
	etags $(SOURCES)
