15f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Makefile for PngMinus (pnm2pngm) 25f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Linux / Unix 35f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 45f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#CC=cc 55f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottCC=gcc 65f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottLD=$(CC) 75f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 8b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# If awk fails try 9b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# make AWK=nawk 10b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 11b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# If cpp fails try 12b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# make CPP=/lib/cpp 13b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottRM=rm -f 15b50c217251b086440efcdb273c22f86a06c80cbaChris CraikCOPY=cp 165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 17b50c217251b086440efcdb273c22f86a06c80cbaChris CraikCPPFLAGS=-I. -DPNG_USER_CONFIG -DNO_GZCOMPRESS -DZ_SOLO -DNO_GZIP 18b478e66e7c2621eef5f465e4629ce642db00716bSireesh TripurariCFLAGS=-O1 -Wall 195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottC=.c 215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottO=.o 225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottL=.a 235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottE= 245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 25b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Where to find the source code: 26b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPNGSRC =../../.. 27b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZLIBSRC=$(PNGSRC)/../zlib 28b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPROGSRC=$(PNGSRC)/contrib/pngminus 29b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 30b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Zlib 31b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZSRCS = adler32$(C) compress$(C) crc32$(C) deflate$(C) \ 32b50c217251b086440efcdb273c22f86a06c80cbaChris Craik trees$(C) zutil$(C) 33b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 34b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Standard headers 35b50c217251b086440efcdb273c22f86a06c80cbaChris Craik#ZH = zlib.h crc32.h deflate.h trees.h zutil.h 36b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZH = zlib.h crc32.h deflate.h trees.h zutil.h 37b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 38b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Machine generated headers 39b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZCONF = zconf.h 40b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 41b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Headers callers use 42b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZINC = zlib.h $(ZCONF) 43b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 44b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Headers the Zlib source uses 45b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZHDRS = $(ZH) $(ZCONF) 46b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 47b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# compress is not required; it is needed to link the zlib 48b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# code because deflate defines an unused API function deflateBound 49b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# which itself calls compressBound from compress. 505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottZOBJS = adler32$(O) compress$(O) crc32$(O) deflate$(O) \ 51b50c217251b086440efcdb273c22f86a06c80cbaChris Craik trees$(O) zutil$(O) 52b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 53b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# libpng 54b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPNGSRCS=png$(C) pngerror$(C) pngget$(C) pngmem$(C) \ 55b50c217251b086440efcdb273c22f86a06c80cbaChris Craik pngset$(C) pngtrans$(C) pngwio$(C) pngwrite$(C) \ 56b50c217251b086440efcdb273c22f86a06c80cbaChris Craik pngwtran$(C) pngwutil$(C) 57b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 58b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Standard headers 59b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPNGH =png.h pngconf.h pngdebug.h pnginfo.h pngpriv.h pngstruct.h 60b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 61b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Machine generated headers 62b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPNGCONF=pnglibconf.h 635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 64b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Headers callers use 65b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPNGINC= png.h pngconf.h pngusr.h $(PNGCONF) 66b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 67b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Headers the PNG library uses 68b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPNGHDRS=$(PNGH) $(PNGCONF) pngusr.h 69b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 70b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPNGOBJS=png$(O) pngerror$(O) pngget$(O) pngmem$(O) \ 715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott pngset$(O) pngtrans$(O) pngwio$(O) pngwrite$(O) \ 72b50c217251b086440efcdb273c22f86a06c80cbaChris Craik pngwtran$(O) pngwutil$(O) 73b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 74b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPROGSRCS= pnm2pngm$(C) 75b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPROGHDRS= 76b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPROGDOCS= 77b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPROGOBJS= pnm2pngm$(O) 78b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 79b50c217251b086440efcdb273c22f86a06c80cbaChris CraikOBJS = $(PROGOBJS) $(PNGOBJS) $(ZOBJS) 805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# implicit make rules ------------------------------------------------------- 825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 83b50c217251b086440efcdb273c22f86a06c80cbaChris Craik.c$(O): 84b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari $(CC) -c $(CPPFLAGS) $(CFLAGS) $< 855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# dependencies 875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottall: pnm2pngm$(E) 895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottpnm2pngm$(E): $(OBJS) 915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $(LD) -o pnm2pngm$(E) $(OBJS) 92b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 93b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# The DFA_XTRA setting turns all libpng options off then 94b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# turns on those required for this minimal build. 95b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# The CPP_FLAGS setting causes pngusr.h to be included in 96b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# both the build of pnglibconf.h and, subsequently, when 97b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# building libpng itself. 98b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(PNGCONF): $(PNGSRC)/scripts/pnglibconf.mak $(ZH)\ 99b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(PNGSRC)/scripts/pnglibconf.dfa \ 100b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(PNGSRC)/scripts/options.awk pngusr.h pngusr.dfa 101b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) pnglibconf.h pnglibconf.dfn 102b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari $(MAKE) -f $(PNGSRC)/scripts/pnglibconf.mak $(MAKEFLAGS)\ 103b50c217251b086440efcdb273c22f86a06c80cbaChris Craik srcdir=$(PNGSRC) CPPFLAGS="-DPNG_USER_CONFIG -I."\ 104b50c217251b086440efcdb273c22f86a06c80cbaChris Craik DFA_XTRA="pngusr.dfa" $@ 1055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 1065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottclean: 107b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari $(MAKE) -f $(PNGSRC)/scripts/pnglibconf.mak $(MAKEFLAGS)\ 108b50c217251b086440efcdb273c22f86a06c80cbaChris Craik srcdir=$(PNGSRC) clean 1095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $(RM) pnm2pngm$(O) 1105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $(RM) pnm2pngm$(E) 1115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $(RM) $(OBJS) 1125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 113b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# distclean also removes the copied source and headers 114b50c217251b086440efcdb273c22f86a06c80cbaChris Craikdistclean: clean 115b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) -r scripts # historical reasons 116b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $(PNGSRCS) $(PNGH) 117b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $(ZSRCS) $(ZH) $(ZCONF) 118b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $(PROGSRCS) $(PROGHDRS) $(PROGDOCS) 119b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 120b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Header file dependencies: 121b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(PROGOBJS): $(PROGHDRS) $(PNGINC) $(ZINC) 122b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(PNGOBJS): $(PNGHDRS) $(ZINC) 123b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(ZOBJS): $(ZHDRS) 124b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 125b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Gather the source code from the respective directories 126b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(PNGSRCS) $(PNGH): $(PNGSRC)/$@ 127b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $@ 128b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(COPY) $(PNGSRC)/$@ $@ 129b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 130b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# No dependency on the ZLIBSRC target so that it only needs 131b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# to be specified once. 132b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(ZSRCS) $(ZH): 133b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $@ 134b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(COPY) $(ZLIBSRC)/$@ $@ 135b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 136b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# The unconfigured zconf.h varies in name according to the 137b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# zlib release 138b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(ZCONF): 139b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $@ 140b50c217251b086440efcdb273c22f86a06c80cbaChris Craik @for f in zconf.h.in zconf.in.h zconf.h; do\ 141b50c217251b086440efcdb273c22f86a06c80cbaChris Craik test -r $(ZLIBSRC)/$$f &&\ 142b50c217251b086440efcdb273c22f86a06c80cbaChris Craik echo $(COPY) $(ZLIBSRC)/$$f $@ &&\ 143b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(COPY) $(ZLIBSRC)/$$f $@ && exit 0;\ 144b50c217251b086440efcdb273c22f86a06c80cbaChris Craik done; echo copy: $(ZLIBSRC)/zconf.h not found; exit 1 145b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 146b50c217251b086440efcdb273c22f86a06c80cbaChris Craikpnm2pngm.c: $(PROGSRC)/pnm2png.c 147b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $@ 148b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(COPY) $(PROGSRC)/pnm2png.c $@ 149b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 1505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# End of makefile for pnm2pngm 151