15f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Makefile for PngMinus (pngm2pnm) 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 (minimal inflate requirements - crc32 is used by libpng) 31b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# zutil can be eliminated if you provide your own zcalloc and zcfree 32b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZSRCS = adler32$(C) crc32$(C) \ 33b50c217251b086440efcdb273c22f86a06c80cbaChris Craik inffast$(C) inflate$(C) inftrees$(C) \ 34b50c217251b086440efcdb273c22f86a06c80cbaChris Craik zutil$(C) 35b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 36b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Standard headers 37b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZH = zlib.h crc32.h inffast.h inffixed.h \ 38b50c217251b086440efcdb273c22f86a06c80cbaChris Craik inflate.h inftrees.h zutil.h 39b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 40b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Machine generated headers 41b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZCONF = zconf.h 42b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 43b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Headers callers use 44b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZINC = zlib.h $(ZCONF) 45b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 46b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Headers the Zlib source uses 47b50c217251b086440efcdb273c22f86a06c80cbaChris CraikZHDRS = $(ZH) $(ZCONF) 48b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottZOBJS = adler32$(O) crc32$(O) \ 50b50c217251b086440efcdb273c22f86a06c80cbaChris Craik inffast$(O) inflate$(O) inftrees$(O) \ 51b50c217251b086440efcdb273c22f86a06c80cbaChris Craik zutil$(O) 52b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 53b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# libpng 54b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPNGSRCS=png$(C) pngerror$(C) pngget$(C) pngmem$(C) \ 55b50c217251b086440efcdb273c22f86a06c80cbaChris Craik pngread$(C) pngrio$(C) pngrtran$(C) pngrutil$(C) \ 56b50c217251b086440efcdb273c22f86a06c80cbaChris Craik pngset$(C) pngtrans$(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 63b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 64b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Headers callers use 65b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPNGINC= png.h pngconf.h pngusr.h $(PNGCONF) 665f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 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 pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) \ 72b50c217251b086440efcdb273c22f86a06c80cbaChris Craik pngset$(O) pngtrans$(O) 73b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 74b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPROGSRCS= pngm2pnm$(C) 75b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPROGHDRS= 76b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPROGDOCS= 77b50c217251b086440efcdb273c22f86a06c80cbaChris CraikPROGOBJS= pngm2pnm$(O) 78b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 79b50c217251b086440efcdb273c22f86a06c80cbaChris CraikOBJS = $(PROGOBJS) $(PNGOBJS) $(ZOBJS) 805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# implicit make rules ------------------------------------------------------- 825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 83b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# note: dependencies do not work on implicit rule lines 84b50c217251b086440efcdb273c22f86a06c80cbaChris Craik.c$(O): 85b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari $(CC) -c $(CPPFLAGS) $(CFLAGS) $< 865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# dependencies 885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottall: pngm2pnm$(E) 905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottpngm2pnm$(E): $(OBJS) 925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $(LD) -o pngm2pnm$(E) $(OBJS) 93b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 94b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# The DFA_XTRA setting turns all libpng options off then 95b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# turns on those required for this minimal build. 96b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# The CPP_FLAGS setting causes pngusr.h to be included in 97b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# both the build of pnglibconf.h and, subsequently, when 98b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# building libpng itself. 99b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(PNGCONF): $(PNGSRC)/scripts/pnglibconf.mak $(ZH)\ 100b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(PNGSRC)/scripts/pnglibconf.dfa \ 101b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(PNGSRC)/scripts/options.awk pngusr.h pngusr.dfa 102b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) pnglibconf.h pnglibconf.dfn 103b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari $(MAKE) -f $(PNGSRC)/scripts/pnglibconf.mak $(MAKEFLAGS)\ 104b50c217251b086440efcdb273c22f86a06c80cbaChris Craik srcdir=$(PNGSRC) CPPFLAGS="-DPNG_USER_CONFIG -I."\ 105b50c217251b086440efcdb273c22f86a06c80cbaChris Craik DFA_XTRA="pngusr.dfa" $@ 1065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 1075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottclean: 108b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari $(MAKE) -f $(PNGSRC)/scripts/pnglibconf.mak $(MAKEFLAGS)\ 109b50c217251b086440efcdb273c22f86a06c80cbaChris Craik srcdir=$(PNGSRC) clean 1105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $(RM) pngm2pnm$(O) 1115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $(RM) pngm2pnm$(E) 1125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $(RM) $(OBJS) 1135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 114b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# distclean also removes the copied source and headers 115b50c217251b086440efcdb273c22f86a06c80cbaChris Craikdistclean: clean 116b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) -r scripts # historical reasons 117b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $(PNGSRCS) $(PNGH) 118b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $(ZSRCS) $(ZH) $(ZCONF) 119b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $(PROGSRCS) $(PROGHDRS) $(PROGDOCS) 120b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 121b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Header file dependencies: 122b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(PROGOBJS): $(PROGHDRS) $(PNGINC) $(ZINC) 123b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(PNGOBJS): $(PNGHDRS) $(ZINC) 124b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(ZOBJS): $(ZHDRS) 125b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 126b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# Gather the source code from the respective directories 127b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(PNGSRCS) $(PNGH): $(PNGSRC)/$@ 128b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $@ 129b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(COPY) $(PNGSRC)/$@ $@ 130b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 131b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# No dependency on the ZLIBSRC target so that it only needs 132b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# to be specified once. 133b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(ZSRCS) $(ZH): 134b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $@ 135b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(COPY) $(ZLIBSRC)/$@ $@ 136b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 137b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# The unconfigured zconf.h varies in name according to the 138b50c217251b086440efcdb273c22f86a06c80cbaChris Craik# zlib release 139b50c217251b086440efcdb273c22f86a06c80cbaChris Craik$(ZCONF): 140b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $@ 141b50c217251b086440efcdb273c22f86a06c80cbaChris Craik @for f in zconf.h.in zconf.in.h zconf.h; do\ 142b50c217251b086440efcdb273c22f86a06c80cbaChris Craik test -r $(ZLIBSRC)/$$f &&\ 143b50c217251b086440efcdb273c22f86a06c80cbaChris Craik echo $(COPY) $(ZLIBSRC)/$$f $@ &&\ 144b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(COPY) $(ZLIBSRC)/$$f $@ && exit 0;\ 145b50c217251b086440efcdb273c22f86a06c80cbaChris Craik done; echo copy: $(ZLIBSRC)/zconf.h not found; exit 1 146b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 147b50c217251b086440efcdb273c22f86a06c80cbaChris Craikpngm2pnm.c: $(PROGSRC)/png2pnm.c 148b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(RM) $@ 149b50c217251b086440efcdb273c22f86a06c80cbaChris Craik $(COPY) $(PROGSRC)/png2pnm.c $@ 150b50c217251b086440efcdb273c22f86a06c80cbaChris Craik 1515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# End of makefile for pngm2pnm 152