# Unix makefile for the JBIG-KIT PBM tools
# $Id: Makefile,v 1.9 1998-11-04 10:00:44+00 mgk25 Rel $
#PREFIX=/usr # inherited from parent dir
#VERISON=1.2 # inherited from parent dir

BINPATH=$(PREFIX)/bin
DOCPATH=$(PREFIX)/doc/jbigkit-$(VERSION)
CYGDOCPATH=$(PREFIX)/doc/Cygwin
MANPATH=$(PREFIX)/man
MAN1PATH=$(MANPATH)/man1
MAN5PATH=$(MANPATH)/man5
SHAREDLIB=cygjbig1.dll

EXE=.exe

# Select an ANSI/ISO C compiler here, e.g. GNU gcc is recommended
CC = gcc
INSTALL=install

# Options for the compiler
CFLAGS = -g -Wall -ansi -pedantic -I../libjbig

.SUFFIXES: .1 .5 .txt $(SUFFIXES)

DOCS=pbmtojbg.txt jbgtopbm.txt pbm.txt pgm.txt
PROGS=pbmtojbg$(EXE) jbgtopbm$(EXE) pbmtojbg-stat$(EXE) jbgtopbm-stat$(EXE)

all: $(PROGS) $(DOCS)

pbmtojbg$(EXE): pbmtojbg.o ../libjbig/${SHAREDLIB}
	$(CC) $(CFLAGS) -o $@ $< -L../libjbig -ljbig

pbmtojbg-stat$(EXE): pbmtojbg-stat.o ../libjbig/libjbig.a
	$(CC) -static $(CFLAGS) -o $@ $< -L../libjbig -ljbig

jbgtopbm$(EXE): jbgtopbm.o ../libjbig/${SHAREDLIB}
	$(CC) $(CFLAGS) -o $@ $< -L../libjbig -ljbig

jbgtopbm-stat$(EXE): jbgtopbm-stat.o ../libjbig/libjbig.a
	$(CC) -static $(CFLAGS) -o $@ $< -L../libjbig -ljbig

jbgtopbm.o: jbgtopbm.c ../libjbig/jbig.h
	$(CC) -c $(CFLAGS) -o $@ $<

jbgtopbm-stat.o: jbgtopbm.c ../libjbig/jbig.h
	$(CC) -c $(CFLAGS) -DJBIG_STATIC -o $@ $<
	
pbmtojbg.o: pbmtojbg.c ../libjbig/jbig.h
	$(CC) -c $(CFLAGS) -o $@ $<

pbmtojbg-stat.o: pbmtojbg.c ../libjbig/jbig.h
	$(CC) -c $(CFLAGS) -DJBIG_STATIC -o $@ $<

../libjbig/libjbig.a:
	cd ../libjbig ; make "CC=$(CC)" "CFLAGS=$(CFLAGS)" \
	"PREFIX=$(PREFIX)" libjbig.a

../libjbig/${SHAREDLIB}:
	cd ../libjbig ; make "CC=$(CC)" "CFLAGS=$(CFLAGS)" \
	"PREFIX=$(PREFIX)" ${SHAREDLIB}

test: test-stat test-dll

test-dll: pbmtojbg$(EXE) jbgtopbm$(EXE) ../libjbig/${SHAREDLIB}
	cp ../libjbig/${SHAREDLIB} .
	make IMG=ccitt1  OPTIONSJ=      OPTIONSP=      dotest1-dll
	make IMG=ccitt2  OPTIONSJ=      OPTIONSP=      dotest1-dll
	make IMG=ccitt3  OPTIONSJ=      OPTIONSP=      dotest1-dll
	make IMG=xvlogo  OPTIONSJ=     "OPTIONSP=-d 3" dotest1-dll
	make IMG=sandra  OPTIONSP=      OPTIONSJ=      dotest2-dll
	make IMG=sandra  OPTIONSP=-b    OPTIONSJ=-b    dotest2-dll
	make IMG=sandra  OPTIONSP=-q    OPTIONSJ=      dotest2-dll
	make IMG=sandra "OPTIONSP=-o 0" OPTIONSJ=      dotest2-dll
	make IMG=sandra "OPTIONSP=-o 2" OPTIONSJ=      dotest2-dll
	rm -f test-*.jbg test-*.pbm test-*.pgm
	@echo
	@echo "The pbmtools have PASSED the (dll) functional tests. Good!"
	@echo

test-stat: pbmtojbg-stat$(EXE) jbgtopbm-stat$(EXE)
	make IMG=ccitt1  OPTIONSJ=      OPTIONSP=      dotest1-stat
	make IMG=ccitt2  OPTIONSJ=      OPTIONSP=      dotest1-stat
	make IMG=ccitt3  OPTIONSJ=      OPTIONSP=      dotest1-stat
	make IMG=xvlogo  OPTIONSJ=     "OPTIONSP=-d 3" dotest1-stat
	make IMG=sandra  OPTIONSP=      OPTIONSJ=      dotest2-stat
	make IMG=sandra  OPTIONSP=-b    OPTIONSJ=-b    dotest2-stat
	make IMG=sandra  OPTIONSP=-q    OPTIONSJ=      dotest2-stat
	make IMG=sandra "OPTIONSP=-o 0" OPTIONSJ=      dotest2-stat
	make IMG=sandra "OPTIONSP=-o 2" OPTIONSJ=      dotest2-stat
	rm -f test-*.jbg test-*.pbm test-*.pgm
	@echo
	@echo "The pbmtools have PASSED the (static) functional tests. Good!"
	@echo

dotest1-dll:
	./jbgtopbm $(OPTIONSJ) ../examples/$(IMG).jbg test-$(IMG).pbm
	./pbmtojbg $(OPTIONSP) test-$(IMG).pbm test-$(IMG).jbg
	cmp test-$(IMG).jbg ../examples/$(IMG).jbg

dotest2-dll:
	./pbmtojbg $(OPTIONSP) ../examples/$(IMG).pgm test-$(IMG).jbg
	./jbgtopbm $(OPTIONSJ) test-$(IMG).jbg test-$(IMG).pgm
	cmp test-$(IMG).pgm ../examples/$(IMG).pgm

dotest1-stat:
	./jbgtopbm-stat $(OPTIONSJ) ../examples/$(IMG).jbg test-$(IMG).pbm
	./pbmtojbg-stat $(OPTIONSP) test-$(IMG).pbm test-$(IMG).jbg
	cmp test-$(IMG).jbg ../examples/$(IMG).jbg

dotest2-stat:
	./pbmtojbg-stat $(OPTIONSP) ../examples/$(IMG).pgm test-$(IMG).jbg
	./jbgtopbm-stat $(OPTIONSJ) test-$(IMG).jbg test-$(IMG).pgm

.1.txt:
	groff -man -Tascii $< | grotty -u -b - >$@

.5.txt:
	groff -man -Tascii $< | grotty -u -b - >$@

install: all
	-@if [ ! -d $(BINPATH) ]; then mkdir -p $(BINPATH); fi
	-@if [ ! -d $(MAN1PATH) ]; then mkdir -p $(MAN1PATH); fi
	-@if [ ! -d $(MAN5PATH) ]; then mkdir -p $(MAN5PATH); fi
	-@if [ ! -d $(DOCPATH) ]; then mkdir -p $(DOCPATH); fi
	$(INSTALL) -m 755 -s pbmtojbg$(EXE) $(BINPATH)
	$(INSTALL) -m 755 -s jbgtopbm$(EXE) $(BINPATH)
	$(INSTALL) -m 644 pbm.5 $(MAN5PATH)
	$(INSTALL) -m 644 pgm.5 $(MAN5PATH)
	$(INSTALL) -m 644 jbgtopbm.1 $(MAN1PATH)
	$(INSTALL) -m 644 pbmtojbg.1 $(MAN1PATH)
	$(INSTALL) -m 644 $(DOCS) $(DOCPATH)

clean:
	rm -f *.o *~ core pbmtojbg$(EXE) jbgtopbm$(EXE) \
	pbmtojbg-stat$(EXE) jbgtopbm-stat$(EXE) \
	${SHAREDLIB}
