OLD | NEW |
(Empty) | |
| 1 # Sample makefile for rpng-win / rpng2-win / wpng using MSVC and NMAKE. |
| 2 # Greg Roelofs |
| 3 # Last modified: 2 June 2007 |
| 4 # |
| 5 # The programs built by this makefile are described in the book, |
| 6 # "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and |
| 7 # Associates, 1999). Go buy a copy, eh? Well, OK, it's not |
| 8 # generally for sale anymore, but it's the thought that counts, |
| 9 # right? (Hint: http://www.libpng.org/pub/png/book/ ) |
| 10 # |
| 11 # Invoke this makefile from a DOS prompt window via: |
| 12 # |
| 13 # %devstudio%\vc\bin\vcvars32.bat |
| 14 # nmake -nologo -f Makefile.w32 |
| 15 # |
| 16 # where %devstudio% is the installation directory for MSVC / DevStudio. If |
| 17 # you get "environment out of space" errors, create a desktop shortcut with |
| 18 # "c:\windows\command.com /e:4096" as the program command line and set the |
| 19 # working directory to this directory. Then double-click to open the new |
| 20 # DOS-prompt window with a bigger environment and retry the commands above. |
| 21 # |
| 22 # This makefile assumes libpng and zlib have already been built or downloaded |
| 23 # and are in subdirectories at the same level as the current subdirectory |
| 24 # (as indicated by the PNGPATH and ZPATH macros below). Edit as appropriate. |
| 25 # |
| 26 # Note that the names of the dynamic and static libpng and zlib libraries |
| 27 # used below may change in later releases of the libraries. This makefile |
| 28 # builds statically linked executables, but that can be changed by uncom- |
| 29 # menting the appropriate PNGLIB and ZLIB lines. |
| 30 |
| 31 !include <ntwin32.mak> |
| 32 |
| 33 |
| 34 # macros -------------------------------------------------------------------- |
| 35 |
| 36 PNGPATH = ../libpng |
| 37 PNGINC = -I$(PNGPATH) |
| 38 #PNGLIB = $(PNGPATH)/pngdll.lib |
| 39 PNGLIB = $(PNGPATH)/libpng.lib |
| 40 |
| 41 ZPATH = ../zlib |
| 42 ZINC = -I$(ZPATH) |
| 43 #ZLIB = $(ZPATH)/zlibdll.lib |
| 44 ZLIB = $(ZPATH)/zlibstat.lib |
| 45 |
| 46 WINLIBS = -defaultlib:user32.lib gdi32.lib |
| 47 # ["real" apps may also need comctl32.lib, comdlg32.lib, winmm.lib, etc.] |
| 48 |
| 49 INCS = $(PNGINC) $(ZINC) |
| 50 RLIBS = $(PNGLIB) $(ZLIB) $(WINLIBS) |
| 51 WLIBS = $(PNGLIB) $(ZLIB) |
| 52 |
| 53 CC = cl |
| 54 LD = link |
| 55 RM = del |
| 56 CPPFLAGS = $(INCS) |
| 57 CFLAGS = -nologo -O -W3 $(cvars) |
| 58 # [note that -W3 is an MSVC-specific compilation flag ("all warnings on")] |
| 59 # [see %devstudio%\vc\include\win32.mak for cvars macro definition] |
| 60 O = .obj |
| 61 E = .exe |
| 62 |
| 63 RLDFLAGS = -nologo -subsystem:windows |
| 64 WLDFLAGS = -nologo |
| 65 |
| 66 RPNG = rpng-win |
| 67 RPNG2 = rpng2-win |
| 68 WPNG = wpng |
| 69 |
| 70 ROBJS = $(RPNG)$(O) readpng$(O) |
| 71 ROBJS2 = $(RPNG2)$(O) readpng2$(O) |
| 72 WOBJS = $(WPNG)$(O) writepng$(O) |
| 73 |
| 74 EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E) |
| 75 |
| 76 |
| 77 # implicit make rules ------------------------------------------------------- |
| 78 |
| 79 .c$(O): |
| 80 $(CC) -c $(CPPFLAGS) $(CFLAGS) $< |
| 81 |
| 82 |
| 83 # dependencies -------------------------------------------------------------- |
| 84 |
| 85 all: $(EXES) |
| 86 |
| 87 $(RPNG)$(E): $(ROBJS) |
| 88 $(LD) $(RLDFLAGS) -out:$@ $(ROBJS) $(RLIBS) |
| 89 |
| 90 $(RPNG2)$(E): $(ROBJS2) |
| 91 $(LD) $(RLDFLAGS) -out:$@ $(ROBJS2) $(RLIBS) |
| 92 |
| 93 $(WPNG)$(E): $(WOBJS) |
| 94 $(LD) $(WLDFLAGS) -out:$@ $(WOBJS) $(WLIBS) |
| 95 |
| 96 $(RPNG)$(O): $(RPNG).c readpng.h |
| 97 $(RPNG2)$(O): $(RPNG2).c readpng2.h |
| 98 $(WPNG)$(O): $(WPNG).c writepng.h |
| 99 |
| 100 readpng$(O): readpng.c readpng.h |
| 101 readpng2$(O): readpng2.c readpng2.h |
| 102 writepng$(O): writepng.c writepng.h |
| 103 |
| 104 |
| 105 # maintenance --------------------------------------------------------------- |
| 106 |
| 107 clean: |
| 108 # ideally we could just do this: |
| 109 # $(RM) $(EXES) $(ROBJS) $(ROBJS2) $(WOBJS) |
| 110 # ...but the Windows "DEL" command is none too bright, so: |
| 111 $(RM) r*$(E) |
| 112 $(RM) w*$(E) |
| 113 $(RM) r*$(O) |
| 114 $(RM) w*$(O) |
OLD | NEW |