|
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 CFLAGS = -nologo -O -W3 $(INCS) $(cvars) |
|
57 # [note that -W3 is an MSVC-specific compilation flag ("all warnings on")] |
|
58 # [see %devstudio%\vc\include\win32.mak for cvars macro definition] |
|
59 O = .obj |
|
60 E = .exe |
|
61 |
|
62 RLDFLAGS = -nologo -subsystem:windows |
|
63 WLDFLAGS = -nologo |
|
64 |
|
65 RPNG = rpng-win |
|
66 RPNG2 = rpng2-win |
|
67 WPNG = wpng |
|
68 |
|
69 ROBJS = $(RPNG)$(O) readpng$(O) |
|
70 ROBJS2 = $(RPNG2)$(O) readpng2$(O) |
|
71 WOBJS = $(WPNG)$(O) writepng$(O) |
|
72 |
|
73 EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E) |
|
74 |
|
75 |
|
76 # implicit make rules ------------------------------------------------------- |
|
77 |
|
78 .c$(O): |
|
79 $(CC) -c $(CFLAGS) $< |
|
80 |
|
81 |
|
82 # dependencies -------------------------------------------------------------- |
|
83 |
|
84 all: $(EXES) |
|
85 |
|
86 $(RPNG)$(E): $(ROBJS) |
|
87 $(LD) $(RLDFLAGS) -out:$@ $(ROBJS) $(RLIBS) |
|
88 |
|
89 $(RPNG2)$(E): $(ROBJS2) |
|
90 $(LD) $(RLDFLAGS) -out:$@ $(ROBJS2) $(RLIBS) |
|
91 |
|
92 $(WPNG)$(E): $(WOBJS) |
|
93 $(LD) $(WLDFLAGS) -out:$@ $(WOBJS) $(WLIBS) |
|
94 |
|
95 $(RPNG)$(O): $(RPNG).c readpng.h |
|
96 $(RPNG2)$(O): $(RPNG2).c readpng2.h |
|
97 $(WPNG)$(O): $(WPNG).c writepng.h |
|
98 |
|
99 readpng$(O): readpng.c readpng.h |
|
100 readpng2$(O): readpng2.c readpng2.h |
|
101 writepng$(O): writepng.c writepng.h |
|
102 |
|
103 |
|
104 # maintenance --------------------------------------------------------------- |
|
105 |
|
106 clean: |
|
107 # ideally we could just do this: |
|
108 # $(RM) $(EXES) $(ROBJS) $(ROBJS2) $(WOBJS) |
|
109 # ...but the Windows "DEL" command is none too bright, so: |
|
110 $(RM) r*$(E) |
|
111 $(RM) w*$(E) |
|
112 $(RM) r*$(O) |
|
113 $(RM) w*$(O) |