1 # Visual C++ Makefile for PuTTY.
3 # Use `nmake' to build.
8 # Extra options you can set:
11 # Enables a hack that tunnels through some firewall proxies.
13 # - VER=/DSNAPSHOT=1999-01-25
14 # Generates executables whose About box report them as being a
15 # development snapshot.
17 # - VER=/DRELEASE=0.43
18 # Generates executables whose About box report them as being a
21 # - COMPAT=/DAUTO_WINSOCK
22 # Causes PuTTY to assume that <windows.h> includes its own WinSock
23 # header file, so that it won't try to include <winsock.h>.
25 # - COMPAT=/DWINSOCK_TWO
26 # Causes the PuTTY utilities to include <winsock2.h> instead of
27 # <winsock.h>, except Plink which _needs_ WinSock 2 so it already
31 # Uses ASCII rather than Unicode to specify the tab control in
32 # the resource file. Probably most useful when compiling with
33 # Cygnus/mingw32, whose resource compiler may have less of a
36 # - XFLAGS=/DMALLOC_LOG
37 # Causes PuTTY to emit a file called putty_mem.log, logging every
38 # memory allocation and free, so you can track memory leaks.
40 # - XFLAGS=/DMINEFIELD
41 # Causes PuTTY to use a custom memory allocator, similar in
42 # concept to Electric Fence, in place of regular malloc(). Wastes
43 # huge amounts of RAM, but should cause heap-corruption bugs to
44 # show up as GPFs at the point of failure rather than appearing
45 # later on as second-level damage.
49 CFLAGS
= /nologo
/W3
/YX
/O2
/Yd
/D_WINDOWS
/DDEBUG
/ML
/Fd
53 # CFLAGS = /nologo /W3 /YX /O2 /Yd /D_WINDOWS /DDEBUG /MD /Fd
55 # Disable debug and incremental linking
56 LFLAGS
= /incremental
:no
59 cl
$(COMPAT
) $(FWHACK
) $(XFLAGS
) $(CFLAGS
) /c
$*.c
64 ##-- objects putty puttytel
65 GOBJS1
= window.
$(OBJ
) windlg.
$(OBJ
) winctrls.
$(OBJ
) terminal.
$(OBJ
)
66 GOBJS2
= xlat.
$(OBJ
) sizetip.
$(OBJ
)
67 ##-- objects putty puttytel plink
68 LOBJS1
= telnet.
$(OBJ
) raw.
$(OBJ
) rlogin.
$(OBJ
) ldisc.
$(OBJ
) winnet.
$(OBJ
)
69 ##-- objects putty plink
72 TOBJS
= be_nossh.
$(OBJ
)
76 SOBJS
= scp.
$(OBJ
) winnet.
$(OBJ
) be_none.
$(OBJ
)
78 FOBJS
= psftp.
$(OBJ
) sftp.
$(OBJ
) int64.
$(OBJ
) winnet.
$(OBJ
) be_none.
$(OBJ
)
79 ##-- objects putty puttytel pscp psftp plink
80 MOBJS
= misc.
$(OBJ
) version.
$(OBJ
) winstore.
$(OBJ
) settings.
$(OBJ
)
81 MOBJ2
= tree234.
$(OBJ
)
82 ##-- objects putty pscp psftp plink
83 OBJS1
= sshcrc.
$(OBJ
) sshdes.
$(OBJ
) sshmd5.
$(OBJ
) sshrsa.
$(OBJ
) sshrand.
$(OBJ
)
84 OBJS2
= sshsha.
$(OBJ
) sshblowf.
$(OBJ
) noise.
$(OBJ
) sshdh.
$(OBJ
) sshdss.
$(OBJ
)
85 OBJS3
= sshbn.
$(OBJ
) sshpubk.
$(OBJ
) ssh.
$(OBJ
) pageantc.
$(OBJ
) sshzlib.
$(OBJ
)
86 OBJS4
= x11fwd.
$(OBJ
) sshaes.
$(OBJ
)
88 PAGE1
= pageant.
$(OBJ
) sshrsa.
$(OBJ
) sshpubk.
$(OBJ
) sshdes.
$(OBJ
) sshbn.
$(OBJ
)
89 PAGE2
= sshmd5.
$(OBJ
) version.
$(OBJ
) tree234.
$(OBJ
) misc.
$(OBJ
) sshaes.
$(OBJ
)
91 GEN1
= puttygen.
$(OBJ
) sshrsag.
$(OBJ
) sshprime.
$(OBJ
) sshdes.
$(OBJ
)
92 GEN2
= sshbn.
$(OBJ
) sshmd5.
$(OBJ
) version.
$(OBJ
) sshrand.
$(OBJ
) noise.
$(OBJ
)
93 GEN3
= sshsha.
$(OBJ
) winstore.
$(OBJ
) misc.
$(OBJ
) winctrls.
$(OBJ
)
94 GEN4
= sshrsa.
$(OBJ
) sshpubk.
$(OBJ
) sshaes.
$(OBJ
)
95 ##-- resources putty puttytel
96 PRESRC
= win_res.
$(RES
)
97 ##-- resources pageant
98 PAGERC
= pageant.
$(RES
)
99 ##-- resources puttygen
100 GENRC
= puttygen.
$(RES
)
101 ##-- resources pscp psftp
104 LRESRC
= plink.
$(RES
)
118 LIBS1
= advapi32.lib user32.lib gdi32.lib
119 LIBS2
= comctl32.lib comdlg32.lib
124 all: putty.exe puttytel.exe pscp.exe psftp.exe \
125 plink.exe pageant.exe puttygen.exe
127 putty.exe
: $(GOBJS1
) $(GOBJS2
) $(LOBJS1
) $(POBJS
) $(MOBJS
) $(MOBJ2
) $(OBJS1
) $(OBJS2
) $(OBJS3
) $(OBJS4
) $(PRESRC
) putty.rsp
128 link
$(LFLAGS
) -out
:putty.exe
-map
:putty.map @putty.rsp
130 puttytel.exe
: $(GOBJS1
) $(GOBJS2
) $(LOBJS1
) $(TOBJS
) $(MOBJS
) $(MOBJ2
) $(PRESRC
) puttytel.rsp
131 link
$(LFLAGS
) -out
:puttytel.exe
-map
:puttytel.map @puttytel.rsp
133 pageant.exe
: $(PAGE1
) $(PAGE2
) $(PAGERC
) pageant.rsp
134 link
$(LFLAGS
) -out
:pageant.exe
-map
:pageant.map @pageant.rsp
136 puttygen.exe
: $(GEN1
) $(GEN2
) $(GEN3
) $(GEN4
) $(GENRC
) puttygen.rsp
137 link
$(LFLAGS
) -out
:puttygen.exe
-map
:puttygen.map @puttygen.rsp
139 pscp.exe
: $(SOBJS
) $(MOBJS
) $(MOBJ2
) $(OBJS1
) $(OBJS2
) $(OBJS3
) $(OBJS4
) $(SRESRC
) pscp.rsp
140 link
$(LFLAGS
) -out
:pscp.exe
-map
:pscp.map @pscp.rsp
142 psftp.exe
: $(FOBJS
) $(MOBJS
) $(MOBJ2
) $(OBJS1
) $(OBJS2
) $(OBJS3
) $(OBJS4
) $(SRESRC
) psftp.rsp
143 link
$(LFLAGS
) -out
:psftp.exe
-map
:psftp.map @psftp.rsp
145 plink.exe
: $(LOBJS1
) $(POBJS
) $(PLOBJS
) $(MOBJS
) $(MOBJ2
) $(OBJS1
) $(OBJS2
) $(OBJS3
) $(OBJS4
) $(LRESRC
) plink.rsp
146 link
$(LFLAGS
) -out
:plink.exe
-map
:plink.map @plink.rsp
149 echo
/nologo
/subsystem
:windows
> putty.rsp
150 echo
$(GOBJS1
) >> putty.rsp
151 echo
$(GOBJS2
) >> putty.rsp
152 echo
$(LOBJS1
) >> putty.rsp
153 echo
$(POBJS
) >> putty.rsp
154 echo
$(MOBJS
) >> putty.rsp
155 echo
$(MOBJ2
) >> putty.rsp
156 echo
$(OBJS1
) >> putty.rsp
157 echo
$(OBJS2
) >> putty.rsp
158 echo
$(OBJS3
) >> putty.rsp
159 echo
$(OBJS4
) >> putty.rsp
160 echo
$(PRESRC
) >> putty.rsp
161 echo
$(LIBS1
) >> putty.rsp
162 echo
$(LIBS2
) >> putty.rsp
163 echo
$(SOCK1
) >> putty.rsp
165 puttytel.rsp
: makefile
166 echo
/nologo
/subsystem
:windows
> puttytel.rsp
167 echo
$(GOBJS1
) >> puttytel.rsp
168 echo
$(GOBJS2
) >> puttytel.rsp
169 echo
$(LOBJS1
) >> puttytel.rsp
170 echo
$(TOBJS
) >> puttytel.rsp
171 echo
$(MOBJS
) >> puttytel.rsp
172 echo
$(MOBJ2
) >> puttytel.rsp
173 echo
$(PRESRC
) >> puttytel.rsp
174 echo
$(LIBS1
) >> puttytel.rsp
175 echo
$(LIBS2
) >> puttytel.rsp
176 echo
$(SOCK1
) >> puttytel.rsp
178 pageant.rsp
: makefile
179 echo
/nologo
/subsystem
:windows
> pageant.rsp
180 echo
$(PAGE1
) >> pageant.rsp
181 echo
$(PAGE2
) >> pageant.rsp
182 echo
$(PAGERC
) >> pageant.rsp
183 echo
$(LIBS1
) >> pageant.rsp
184 echo
$(LIBS2
) >> pageant.rsp
185 echo
$(LIBS3
) >> pageant.rsp
187 puttygen.rsp
: makefile
188 echo
/nologo
/subsystem
:windows
> puttygen.rsp
189 echo
$(GEN1
) >> puttygen.rsp
190 echo
$(GEN2
) >> puttygen.rsp
191 echo
$(GEN3
) >> puttygen.rsp
192 echo
$(GEN4
) >> puttygen.rsp
193 echo
$(GENRC
) >> puttygen.rsp
194 echo
$(LIBS1
) >> puttygen.rsp
195 echo
$(LIBS2
) >> puttygen.rsp
196 echo
$(LIBS3
) >> puttygen.rsp
199 echo
/nologo
/subsystem
:console
> pscp.rsp
200 echo
$(SOBJS
) >> pscp.rsp
201 echo
$(MOBJS
) >> pscp.rsp
202 echo
$(MOBJ2
) >> pscp.rsp
203 echo
$(OBJS1
) >> pscp.rsp
204 echo
$(OBJS2
) >> pscp.rsp
205 echo
$(OBJS3
) >> pscp.rsp
206 echo
$(OBJS4
) >> pscp.rsp
207 echo
$(SRESRC
) >> pscp.rsp
208 echo
$(LIBS1
) >> pscp.rsp
209 echo
$(LIBS2
) >> pscp.rsp
210 echo
$(SOCK1
) >> pscp.rsp
213 echo
/nologo
/subsystem
:console
> psftp.rsp
214 echo
$(FOBJS
) >> psftp.rsp
215 echo
$(MOBJS
) >> psftp.rsp
216 echo
$(MOBJ2
) >> psftp.rsp
217 echo
$(OBJS1
) >> psftp.rsp
218 echo
$(OBJS2
) >> psftp.rsp
219 echo
$(OBJS3
) >> psftp.rsp
220 echo
$(OBJS4
) >> psftp.rsp
221 echo
$(SRESRC
) >> psftp.rsp
222 echo
$(LIBS1
) >> psftp.rsp
223 echo
$(LIBS2
) >> psftp.rsp
224 echo
$(SOCK1
) >> psftp.rsp
227 echo
/nologo
/subsystem
:console
> plink.rsp
228 echo
$(LOBJS1
) >> plink.rsp
229 echo
$(POBJS
) >> plink.rsp
230 echo
$(PLOBJS
) >> plink.rsp
231 echo
$(MOBJS
) >> plink.rsp
232 echo
$(MOBJ2
) >> plink.rsp
233 echo
$(OBJS1
) >> plink.rsp
234 echo
$(OBJS2
) >> plink.rsp
235 echo
$(OBJS3
) >> plink.rsp
236 echo
$(OBJS4
) >> plink.rsp
237 echo
$(LRESRC
) >> plink.rsp
238 echo
$(LIBS1
) >> plink.rsp
239 echo
$(LIBS2
) >> plink.rsp
240 echo
$(SOCK2
) >> plink.rsp
243 window.
$(OBJ
): window.c putty.h puttymem.h network.h win_res.h storage.h winstuff.h
244 windlg.
$(OBJ
): windlg.c putty.h puttymem.h network.h ssh.h win_res.h winstuff.h
245 winctrls.
$(OBJ
): winctrls.c winstuff.h winstuff.h
246 settings.
$(OBJ
): settings.c putty.h puttymem.h network.h storage.h
247 winstore.
$(OBJ
): winstore.c putty.h puttymem.h network.h storage.h
248 terminal.
$(OBJ
): terminal.c putty.h puttymem.h network.h
249 sizetip.
$(OBJ
): sizetip.c putty.h puttymem.h network.h winstuff.h
250 telnet.
$(OBJ
): telnet.c putty.h puttymem.h network.h
251 raw.
$(OBJ
): raw.c putty.h puttymem.h network.h
252 rlogin.
$(OBJ
): rlogin.c putty.h puttymem.h network.h
253 xlat.
$(OBJ
): xlat.c putty.h puttymem.h network.h
254 ldisc.
$(OBJ
): ldisc.c putty.h puttymem.h network.h
255 misc.
$(OBJ
): misc.c putty.h puttymem.h network.h
256 noise.
$(OBJ
): noise.c putty.h puttymem.h network.h ssh.h storage.h
257 ssh.
$(OBJ
): ssh.c ssh.h putty.h puttymem.h network.h tree234.h
258 sshcrc.
$(OBJ
): sshcrc.c ssh.h puttymem.h
259 sshdes.
$(OBJ
): sshdes.c ssh.h puttymem.h
260 sshaes.
$(OBJ
): sshaes.c ssh.h puttymem.h
261 sshmd5.
$(OBJ
): sshmd5.c ssh.h puttymem.h
262 sshrsa.
$(OBJ
): sshrsa.c ssh.h puttymem.h
263 sshsha.
$(OBJ
): sshsha.c ssh.h puttymem.h
264 sshrand.
$(OBJ
): sshrand.c ssh.h puttymem.h
265 sshblowf.
$(OBJ
): sshblowf.c ssh.h puttymem.h
266 sshdh.
$(OBJ
): sshdh.c ssh.h puttymem.h
267 sshdss.
$(OBJ
): sshdss.c ssh.h puttymem.h
268 sshbn.
$(OBJ
): sshbn.c ssh.h puttymem.h
269 sshpubk.
$(OBJ
): sshpubk.c ssh.h puttymem.h
270 sshzlib.
$(OBJ
): sshzlib.c ssh.h puttymem.h
271 scp.
$(OBJ
): scp.c putty.h puttymem.h network.h winstuff.h
272 version.
$(OBJ
): version.c
273 be_all.
$(OBJ
): be_all.c
274 be_nossh.
$(OBJ
): be_nossh.c
275 be_none.
$(OBJ
): be_none.c
276 plink.
$(OBJ
): plink.c putty.h puttymem.h network.h winstuff.h
277 pageant.
$(OBJ
): pageant.c ssh.h puttymem.h tree234.h
278 pageantc.
$(OBJ
): pageantc.c puttymem.h
279 tree234.
$(OBJ
): tree234.c tree234.h puttymem.h
280 puttygen.
$(OBJ
): puttygen.c putty.h ssh.h winstuff.h
281 psftp.
$(OBJ
): psftp.c putty.h ssh.h storage.h sftp.h int64.h
282 sftp.
$(OBJ
): sftp.c sftp.h int64.h
283 int64.
$(OBJ
): int64.c int64.h
286 # Hack to force version.obj to be rebuilt always
287 version.obj
: versionpseudotarget
288 @echo
(built version.obj
)
290 cl
$(FWHACK
) $(VER
) $(CFLAGS
) /c version.c
293 win_res.
$(RES
): win_res.rc win_res.h putty.ico
296 rc
$(FWHACK
) $(RCFL
) -r
-DWIN32
-D_WIN32
-DWINVER
=0x0400 win_res.rc
299 scp.
$(RES
): scp.rc scp.ico
302 rc
$(FWHACK
) $(RCFL
) -r
-DWIN32
-D_WIN32
-DWINVER
=0x0400 scp.rc
305 pageant.
$(RES
): pageant.rc pageant.ico pageants.ico
308 rc
$(FWHACK
) $(RCFL
) -r
-DWIN32
-D_WIN32
-DWINVER
=0x0400 pageant.rc
311 puttygen.
$(RES
): puttygen.rc puttygen.ico
314 rc
$(FWHACK
) $(RCFL
) -r
-DWIN32
-D_WIN32
-DWINVER
=0x0400 puttygen.rc