DESTDIR = /usr/bin
CC = cc
cswitch =
extra = -DBIG_MEM -DNDEBUG

#List of all object files created for Zoo
ZOOOBJS = addbfcrc.o addfname.o basename.o comment.o crcdefs.o \
		getfile.o lzc.o lzd.o machine.o makelist.o misc.o misc2.o \
		nextfile.o needed.o options.o parse.o portable.o prterror.o \
		version.o zoo.o zooadd.o zooadd2.o zoodel.o zooext.o zoofilt.o \
		zoolist.o zoopack.o io.o lzh.o maketbl.o maketree.o huf.o \
		encode.o decode.o

FIZOBJS = fiz.o addbfcrc.o portable.o crcdefs.o

.c.o :
	$(CC) $(cswitch) $(extra) $*.c

zoo: $(ZOOOBJS)
	$(CC) $(ldswitch) $(ZOOOBJS)

fiz: $(FIZOBJS)
	$(CC) $(ldswitch) $(FIZOBJS)

# install alpha zoo as "tzoo"
install:
	mv zoo $(DESTDIR)/tzoo

# install beta zoo as "bzoo"
inst_beta:
	mv zoo $(DESTDIR)/bzoo

# install production zoo as "zoo"
inst_prod:
	mv zoo $(DESTDIR)/zoo

#######################################################################
# CLEANUP TARGETS
#######################################################################

# standard clean -- remove all transient files
clean :
	rm -f core a.out $(ZOOOBJS) $(FIZOBJS)

# object clean only -- just remove object files
objclean:
	rm -f *.o


######################################################
lzd.o : lzd.c zoomem.h
	$(CC) $(cswitch) $(extra) lzd.c

lzc.o : lzc.c zoomem.h
	$(CC) $(cswitch) $(extra) lzc.c

addbfcrc.o : addbfcrc.c
addbfcrc.o: options.h

addfname.o : addfname.c
addfname.o: options.h various.h zoo.h zoofns.h zooio.h
addfname.o: zoomem.h

basename.o : basename.c
basename.o: assert.h debug.h options.h parse.h various.h
basename.o: zoo.h zoofns.h zooio.h

comment.c : zooio.h
comment.o: errors.i options.h portable.h various.h
comment.o: zoo.h zoofns.h zooio.h

crcdefs.o : crcdefs.c
crcdefs.o: options.h

getfile.o : getfile.c zoomem.h
getfile.o: options.h various.h zoo.h zoofns.h zooio.h
getfile.o: zoomem.h
	$(CC) $(cswitch) $(extra) getfile.c

machine.o : machine.c nixtime.i
machine.o: options.h various.h zoo.h zoofns.h zooio.h
	$(CC) $(cswitch) $(extra) machine.c

makelist.o : makelist.c
makelist.o: assert.h debug.h errors.i options.h
makelist.o: portable.h various.h zoo.h zoofns.h zooio.h

misc.c : zooio.h
misc.o: errors.i options.h portable.h various.h zoo.h zoofns.h zooio.h

misc2.o : misc2.c zoomem.h
misc2.o: errors.i options.h portable.h various.h zoo.h
misc2.o: zoofns.h zooio.h zoomem.h
	$(CC) $(cswitch) $(extra) misc2.c

options.o : options.c

nextfile.o :  nextfile.c

needed.o : needed.c
nextfile.o: options.h various.h zoo.h

parse.o : parse.c
parse.o: assert.h options.h parse.h various.h zoo.h
parse.o: zoofns.h zooio.h

portable.o : portable.c
portable.o: assert.h debug.h machine.h options.h
portable.o: portable.h various.h zoo.h zoofns.h zooio.h

prterror.o : prterror.c
prterror.o: options.h various.h
prterror.o: zoofns.h zooio.h

zoo.o :   zoo.c zoomem.h errors.i
zoo.o: errors.i options.h various.h zoo.h zoofns.h
zoo.o: zooio.h zoomem.h
	$(CC) $(cswitch) $(extra) zoo.c

zooadd.c : zooio.h
zooadd.o: debug.h errors.i options.h parse.h portable.h
zooadd.o: various.h zoo.h zoofns.h zooio.h zoomem.h

zooadd2.c : zooio.h
zooadd2.o: assert.h debug.h errors.i options.h parse.h
zooadd2.o: various.h zoo.h zoofns.h zooio.h

zoodel.c : zooio.h
zoodel.o: errors.i options.h portable.h various.h zoo.h zoofns.h zooio.h

zooext.o : zooext.c  errors.i zooio.h
zooext.o: errors.i machine.h options.h parse.h portable.h various.h zoo.h
zooext.o: zoofns.h zooio.h
	$(CC) $(cswitch) $(extra) zooext.c

zoofilt.o : zoofilt.c zooio.h
zoofilt.o: options.h
	$(CC) $(cswitch) $(extra) zoofilt.c

zoolist.c : zooio.h
zoolist.o: errors.i options.h portable.h various.h zoo.h
zoolist.o: zoofns.h zooio.h zoomem.h

zoopack.c : zooio.h
zoopack.o: errors.i options.h portable.h various.h
zoopack.o: zoo.h zoofns.h zooio.h

#=========new stuff=========
decode.o: ar.h lzh.h options.h zoo.h
encode.o: ar.h errors.i lzh.h
encode.o: options.h zoo.h
fiz.o: options.h portable.h various.h zoo.h zoofns.h
fiz.o: zooio.h
huf.o: ar.h errors.i lzh.h options.h zoo.h
io.o:  ar.h errors.i lzh.h options.h portable.h zoo.h
io.o: zooio.h
lzc.o: assert.h debug.h lzconst.h options.h various.h
lzc.o: zoo.h zoofns.h zooio.h zoomem.h
lzd.o: assert.h debug.h lzconst.h options.h various.h
lzd.o: zoo.h zoofns.h zooio.h zoomem.h
lzh.o: ar.h errors.i options.h zoo.h
maketbl.o: ar.h lzh.h options.h zoo.h
maketree.o:  ar.h lzh.h options.h zoo.h
needed.o: debug.h options.h portable.h various.h zoo.h
needed.o: zoofns.h zooio.h
options.o:  errors.i options.h various.h zoo.h zoofns.h
options.o: zooio.h
