##############################################
#
CC=gcc
CFLAGS=-Wall -O2
LDFLAGS=-lm -lz -ljpeg
#LIB= -L/home/wickman/usr/local/lib
#INCLUDE= -I/home/wickman/usr/local/include
LIB= -L./zlib-1.1.3 -L./jpeg-6b
INCLUDE= -I./zlib-1.1.3 -I./jpeg-6b

##############################################
#
CSRC1= cementinit.c cementi.c plm2pnm.c
CSRC2= file.c pnmutils.c makeLookup.c
CSRC= $(CSRC1)           
HDR= cement.h pnmutils.h file.h

OBJS= file.o pnmutils.o jpeg.o
CEMENT_OBJS= cementinit.o cementi.o plm2pnm.o

.SUFFIXES : .o .c

.c.o:   Makefile $@
	$(CC) $(CFLAGS) $(INCLUDE) $(LIB) -DOBJECT_COMPILE -c -o $@ $<

##############################################
#
all: executables libcement.a zlib-1.1.3/libz.a jpeg-6b/libjpeg.a

executables: cementinit cementi cemento plm2pnm plm2jpg ppm2all

zlib-1.1.3/libz.a:
	cd zlib-1.1.3
	./configure
	./make
	cd ..

jpeg-6b/libjpeg.a:
	./jpeg-install.sh


#ar rc libz.a adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o

libcement.a: $(CSRC) Makefile $(OBJS) $(CEMENT_OBJS) cemento.o
	ar rc $@ $(OBJS) $(CEMENT_OBJS) cemento.o

cemento.o: Makefile cementi.c
	$(CC) $(CFLAGS) $(INCLUDE) $(LIB) -DOBJECT_COMPILE -DCEMENT_REMOVE -c -o cemento.o cementi.c
        
#pnmutils.o: pnmutils.c
#	$(CC) $(CFLAGS) $(INCLUDE) -c pnmutils.c

#file.o: file.c
#	$(CC) $(CFLAGS) $(INCLUDE) $(LIB) -c file.c



cementinit: Makefile cementinit.c powLookup.h $(OBJS)
	$(CC) $(CFLAGS) $(INCLUDE) $(LIB) $(OBJS) $@.c -o $@ $(LDFLAGS)

cementi: Makefile cementi.c powLookup.h $(OBJS)
	$(CC) $(CFLAGS) $(INCLUDE) $(LIB) $(OBJS) $@.c -o $@ $(LDFLAGS)

cemento: Makefile cementi.c powLookup.h $(OBJS)
	$(CC) $(CFLAGS) $(INCLUDE) $(LIB) -DCEMENT_REMOVE $(OBJS) cementi.c -o $@ $(LDFLAGS)

plm2pnm: Makefile plm2pnm.c powLookup.h $(OBJS)
	$(CC) $(CFLAGS) $(INCLUDE) $(LIB) $(OBJS) $@.c -o $@ $(LDFLAGS)

makeLookup: Makefile makeLookup.c
	$(CC) $(CFLAGS) $@.c -o $@ -lm

powLookup.h: Makefile makeLookup
	./makeLookup

plm2jpg: Makefile plm2jpg.c
	$(CC) $(CFLAGS) $(INCLUDE) $(LIB) writejpeg.c $@.c -o $@ $(LDFLAGS)

ppm2all: Makefile ppm2all.c
	$(CC) $(CFLAGS) $(INCLUDE) $(LIB) writejpeg.c $@.c -o $@ $(LDFLAGS)


##############################################
#
run: cementinit cementi cemento
	./trowel.pl

#	./cementinit sv035.jpg.ppm.gz 1.0 1.0 1.0 -o total.plm.gz
#	./cementi total.plm.gz sv097.jpg.ppm.gz 0 1 0
#	./plm2pnm total.plm.gz -o total.ppm.gz
#	./cementinit 1.ppm 1.0 1.0 1.0 -o total.plm ;\
#	./cementi total.plm 1.ppm 1.0 1.0 1.0 ;\
#	./cementi total.plm 1.ppm 1.0 1.0 1.0 ;\

#	./cementi total.plm v003.ppm 1.0 1.0 1.0 ;\  # cement it in
#	./cemento total.plm v003.ppm 1.0 1.0 1.0 ;\  # take it out

install: executables
	cp cementinit cementi cemento plm2pnm /home/wickman/bin

clean:
	rm -f *.o core
	rm -f total.ppm total.plm
	rm -f makeLookup

clobber: clean
	rm -f *~
	rm -f cementinit cementi cemento plm2pnm libcement.a

depend:
	makedepend $(INCLUDE) $(CSRC) $(HDR)

tar: $(CSRC) Makefile $(HDR) trowel.pl
	tar -cvf cement.tar $(CSRC) $(CSRC2) $(HDR) Makefile trowel.pl cement.txt sv*gz zlib-1.1.3


##############################################
#
# DO NOT DELETE BELOW THIS LINE

cementinit.o: /usr/include/math.h /usr/include/features.h
cementinit.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
cementinit.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
cementinit.o: /usr/include/bits/mathcalls.h
cementinit.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/float.h
cementinit.o: /usr/include/stdio.h
cementinit.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stddef.h
cementinit.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stdarg.h
cementinit.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/va-alpha.h
cementinit.o: /usr/include/bits/types.h /usr/include/libio.h
cementinit.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
cementinit.o: /usr/include/string.h /usr/include/stdlib.h
cementinit.o: /usr/include/sys/types.h /usr/include/time.h
cementinit.o: /usr/include/endian.h /usr/include/bits/endian.h
cementinit.o: /usr/include/sys/select.h /usr/include/bits/select.h
cementinit.o: /usr/include/bits/sigset.h /usr/include/sys/sysmacros.h
cementinit.o: /usr/include/alloca.h /usr/include/unistd.h
cementinit.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
cementinit.o: /usr/include/getopt.h /usr/include/sys/time.h
cementinit.o: /usr/include/bits/time.h /usr/include/fcntl.h
cementinit.o: /usr/include/bits/fcntl.h /usr/include/assert.h
cementinit.o: ./zlib-1.1.3/zlib.h ./zlib-1.1.3/zconf.h cement.h pnmutils.h
cementinit.o: file.h powLookup.h
cementi.o: /usr/include/math.h /usr/include/features.h
cementi.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
cementi.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
cementi.o: /usr/include/bits/mathcalls.h
cementi.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/float.h
cementi.o: /usr/include/stdio.h
cementi.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stddef.h
cementi.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stdarg.h
cementi.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/va-alpha.h
cementi.o: /usr/include/bits/types.h /usr/include/libio.h
cementi.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
cementi.o: /usr/include/string.h /usr/include/stdlib.h
cementi.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h
cementi.o: /usr/include/bits/endian.h /usr/include/sys/select.h
cementi.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
cementi.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
cementi.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
cementi.o: /usr/include/bits/confname.h /usr/include/getopt.h
cementi.o: /usr/include/sys/time.h /usr/include/bits/time.h
cementi.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h
cementi.o: /usr/include/assert.h /usr/include/errno.h
cementi.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
cementi.o: /usr/include/asm/errno.h /usr/include/sys/wait.h
cementi.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h
cementi.o: /usr/include/bits/siginfo.h cement.h pnmutils.h
cementi.o: ./zlib-1.1.3/zlib.h ./zlib-1.1.3/zconf.h file.h powLookup.h
plm2pnm.o: /usr/include/math.h /usr/include/features.h
plm2pnm.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
plm2pnm.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
plm2pnm.o: /usr/include/bits/mathcalls.h
plm2pnm.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/float.h
plm2pnm.o: /usr/include/stdio.h
plm2pnm.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stddef.h
plm2pnm.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stdarg.h
plm2pnm.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/va-alpha.h
plm2pnm.o: /usr/include/bits/types.h /usr/include/libio.h
plm2pnm.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
plm2pnm.o: /usr/include/string.h /usr/include/stdlib.h
plm2pnm.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h
plm2pnm.o: /usr/include/bits/endian.h /usr/include/sys/select.h
plm2pnm.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
plm2pnm.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
plm2pnm.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
plm2pnm.o: /usr/include/bits/confname.h /usr/include/getopt.h
plm2pnm.o: /usr/include/sys/time.h /usr/include/bits/time.h
plm2pnm.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h
plm2pnm.o: /usr/include/assert.h cement.h pnmutils.h ./zlib-1.1.3/zlib.h
plm2pnm.o: ./zlib-1.1.3/zconf.h file.h powLookup.h
pnmutils.o: /usr/include/stdio.h /usr/include/features.h
pnmutils.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
pnmutils.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stddef.h
pnmutils.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stdarg.h
pnmutils.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/va-alpha.h
pnmutils.o: /usr/include/bits/types.h /usr/include/libio.h
pnmutils.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
pnmutils.o: ./zlib-1.1.3/zlib.h ./zlib-1.1.3/zconf.h file.h
file.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h
file.o: /usr/include/gnu/stubs.h
file.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stddef.h
file.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/stdarg.h
file.o: /usr/lib/gcc-lib/alpha-linux/2.95.2/include/va-alpha.h
file.o: /usr/include/bits/types.h /usr/include/libio.h
file.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
file.o: ./zlib-1.1.3/zlib.h ./zlib-1.1.3/zconf.h
