| # Sample makefile for rpng-win / rpng2-win / wpng using MSVC and NMAKE. | 
 | # Greg Roelofs | 
 | # Last modified:  16 February 1999 | 
 | # | 
 | #	The programs built by this makefile are described in the book, | 
 | #	"PNG:  The Definitive Guide," by Greg Roelofs (O'Reilly and | 
 | #	Associates, 1999).  Go buy a copy, eh?  Buy some for friends | 
 | #	and family, too.  (Not that this is a blatant plug or anything.) | 
 | # | 
 | # Invoke this makefile from a DOS prompt window via: | 
 | # | 
 | #	%devstudio%\vc\bin\vcvars32.bat | 
 | #	nmake -nologo -f makefile.w32 | 
 | # | 
 | # where %devstudio% is the installation directory for MSVC / DevStudio.  If | 
 | # you get "environment out of space" errors, create a desktop shortcut with | 
 | # "c:\windows\command.com /e:4096" as the program command line and set the | 
 | # working directory to this directory.  Then double-click to open the new | 
 | # DOS-prompt window with a bigger environment and retry the commands above. | 
 | #  | 
 | # This makefile assumes libpng and zlib have already been built or downloaded | 
 | # and are in subdirectories at the same level as the current subdirectory | 
 | # (as indicated by the PNGPATH and ZPATH macros below).  Edit as appropriate. | 
 | # | 
 | # Note that the names of the dynamic and static libpng and zlib libraries | 
 | # used below may change in later releases of the libraries.  This makefile | 
 | # builds statically linked executables, but that can be changed by uncom- | 
 | # menting the appropriate PNGLIB and ZLIB lines. | 
 |  | 
 | !include <ntwin32.mak> | 
 |  | 
 |  | 
 | # macros -------------------------------------------------------------------- | 
 |  | 
 | PNGPATH = ../libpng | 
 | PNGINC = -I$(PNGPATH) | 
 | #PNGLIB = $(PNGPATH)/pngdll.lib | 
 | PNGLIB = $(PNGPATH)/libpng.lib | 
 |  | 
 | ZPATH = ../zlib | 
 | ZINC = -I$(ZPATH) | 
 | #ZLIB = $(ZPATH)/zlibdll.lib | 
 | ZLIB = $(ZPATH)/zlibstat.lib | 
 |  | 
 | WINLIBS = -defaultlib:user32.lib gdi32.lib | 
 | # ["real" apps may also need comctl32.lib, comdlg32.lib, winmm.lib, etc.] | 
 |  | 
 | INCS = $(PNGINC) $(ZINC) | 
 | RLIBS = $(PNGLIB) $(ZLIB) $(WINLIBS) | 
 | WLIBS = $(PNGLIB) $(ZLIB) | 
 |  | 
 | CC = cl | 
 | LD = link | 
 | RM = del | 
 | CFLAGS = -nologo -O -W3 $(INCS) $(cvars) | 
 | # [note that -Wall is an MSVC-specific compilation flag ("all warnings on")] | 
 | # [see %devstudio%\vc\include\win32.mak for cvars macro definition] | 
 | O = .obj | 
 | E = .exe | 
 |  | 
 | RLDFLAGS = -nologo -subsystem:windows | 
 | WLDFLAGS = -nologo | 
 |  | 
 | RPNG  = rpng-win | 
 | RPNG2 = rpng2-win | 
 | WPNG  = wpng | 
 |  | 
 | ROBJS  = $(RPNG)$(O) readpng$(O) | 
 | ROBJS2 = $(RPNG2)$(O) readpng2$(O) | 
 | WOBJS  = $(WPNG)$(O) writepng$(O) | 
 |  | 
 | EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E) | 
 |  | 
 |  | 
 | # implicit make rules ------------------------------------------------------- | 
 |  | 
 | .c$(O): | 
 | 	$(CC) -c $(CFLAGS) $< | 
 |  | 
 |  | 
 | # dependencies -------------------------------------------------------------- | 
 |  | 
 | all:  $(EXES) | 
 |  | 
 | $(RPNG)$(E): $(ROBJS) | 
 | 	$(LD) $(RLDFLAGS) -out:$@ $(ROBJS) $(RLIBS) | 
 |  | 
 | $(RPNG2)$(E): $(ROBJS2) | 
 | 	$(LD) $(RLDFLAGS) -out:$@ $(ROBJS2) $(RLIBS) | 
 |  | 
 | $(WPNG)$(E): $(WOBJS) | 
 | 	$(LD) $(WLDFLAGS) -out:$@ $(WOBJS) $(WLIBS) | 
 |  | 
 | $(RPNG)$(O):	$(RPNG).c readpng.h | 
 | $(RPNG2)$(O):	$(RPNG2).c readpng2.h | 
 | $(WPNG)$(O):	$(WPNG).c writepng.h | 
 |  | 
 | readpng$(O):	readpng.c readpng.h | 
 | readpng2$(O):	readpng2.c readpng2.h | 
 | writepng$(O):	writepng.c writepng.h | 
 |  | 
 |  | 
 | # maintenance --------------------------------------------------------------- | 
 |  | 
 | clean: | 
 | #	ideally we could just do this: | 
 | #	$(RM) $(EXES) $(ROBJS) $(ROBJS2) $(WOBJS) | 
 | #	...but the Windows "DEL" command is none too bright, so: | 
 | 	$(RM) r*$(E) | 
 | 	$(RM) w*$(E) | 
 | 	$(RM) r*$(O) | 
 | 	$(RM) w*$(O) |