3d541627 |
1 | # Visual C++ Makefile for PuTTY. |
2 | # |
3 | # Use `nmake' to build. |
4 | # |
5 | |
6 | ##-- help |
7 | # |
8 | # Extra options you can set: |
9 | # |
10 | # - FWHACK=/DFWHACK |
11 | # Enables a hack that tunnels through some firewall proxies. |
12 | # |
13 | # - VER=/DSNAPSHOT=1999-01-25 |
14 | # Generates executables whose About box report them as being a |
15 | # development snapshot. |
16 | # |
17 | # - VER=/DRELEASE=0.43 |
18 | # Generates executables whose About box report them as being a |
19 | # release version. |
20 | # |
4d331a77 |
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>. |
24 | # |
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 |
28 | # does this. |
29 | # |
bd0c3145 |
30 | # - COMPAT=/DNO_SECURITY |
31 | # Disables Pageant's use of <aclapi.h>, which is not available |
32 | # with some development environments. This means that Pageant |
33 | # won't care about the local user ID of processes accessing it; a |
34 | # version of Pageant built with this option will therefore refuse |
35 | # to run under NT-series OSes on security grounds (although it |
36 | # will run fine on Win95-series OSes where there is no access |
37 | # control anyway). |
38 | # |
6ed3635b |
39 | # - RCFL=/DASCIICTLS |
760858ff |
40 | # Uses ASCII rather than Unicode to specify the tab control in |
41 | # the resource file. Probably most useful when compiling with |
42 | # Cygnus/mingw32, whose resource compiler may have less of a |
43 | # problem with it. |
44 | # |
d9027fbd |
45 | # - XFLAGS=/DDEBUG |
46 | # Causes PuTTY to enable internal debugging. |
47 | # |
b191636d |
48 | # - XFLAGS=/DMALLOC_LOG |
49 | # Causes PuTTY to emit a file called putty_mem.log, logging every |
50 | # memory allocation and free, so you can track memory leaks. |
51 | # |
52 | # - XFLAGS=/DMINEFIELD |
53 | # Causes PuTTY to use a custom memory allocator, similar in |
54 | # concept to Electric Fence, in place of regular malloc(). Wastes |
55 | # huge amounts of RAM, but should cause heap-corruption bugs to |
56 | # show up as GPFs at the point of failure rather than appearing |
57 | # later on as second-level damage. |
58 | # |
3d541627 |
59 | ##-- |
676c0556 |
60 | |
d9027fbd |
61 | # Enable debug and incremental linking and compiling |
dea851d6 |
62 | # CFLAGS = /nologo /W3 /YX /Yd /O1 /Gi /D_WINDOWS /DDEBUG /D_WIN32_WINDOWS=0x401 |
cdd6c586 |
63 | # LFLAGS = /debug |
373e94e9 |
64 | |
d9027fbd |
65 | # Disable debug and incremental linking and compiling |
01c034ad |
66 | CFLAGS = /nologo /W3 /O1 /D_WINDOWS /D_WIN32_WINDOWS=0x401 |
cdd6c586 |
67 | LFLAGS = /incremental:no /fixed |
373e94e9 |
68 | |
d9027fbd |
69 | # Use MSVC DLL |
dea851d6 |
70 | # CFLAGS = /nologo /W3 /O1 /MD /D_WINDOWS /D_WIN32_WINDOWS=0x401 |
d9027fbd |
71 | # LFLAGS = /incremental:no |
374330e2 |
72 | |
73 | .c.obj: |
b191636d |
74 | cl $(COMPAT) $(FWHACK) $(XFLAGS) $(CFLAGS) /c $*.c |
374330e2 |
75 | |
3d541627 |
76 | OBJ=obj |
77 | RES=res |
78 | |
89ee5268 |
79 | ##-- objects putty puttytel |
8c3cd914 |
80 | GOBJS1 = window.$(OBJ) windlg.$(OBJ) winctrls.$(OBJ) terminal.$(OBJ) |
4eeb7d09 |
81 | GOBJS2 = sizetip.$(OBJ) wcwidth.$(OBJ) unicode.$(OBJ) |
4017be6d |
82 | ##-- objects putty puttytel plink |
c91409da |
83 | LOBJS1 = telnet.$(OBJ) raw.$(OBJ) rlogin.$(OBJ) ldisc.$(OBJ) winnet.$(OBJ) |
4017be6d |
84 | ##-- objects putty plink |
5c58ad2d |
85 | POBJS = be_all.$(OBJ) |
89ee5268 |
86 | ##-- objects puttytel |
87 | TOBJS = be_nossh.$(OBJ) |
4017be6d |
88 | ##-- objects plink |
a9422f39 |
89 | PLOBJS = plink.$(OBJ) |
3d541627 |
90 | ##-- objects pscp |
4eb24e3a |
91 | SOBJS = scp.$(OBJ) winnet.$(OBJ) be_none.$(OBJ) wildcard.$(OBJ) |
4a8fc3c4 |
92 | ##-- objects psftp |
fd5e5847 |
93 | FOBJS = psftp.$(OBJ) winnet.$(OBJ) be_none.$(OBJ) |
94 | ##-- objects pscp psftp |
95 | SFOBJS = sftp.$(OBJ) int64.$(OBJ) |
4a8fc3c4 |
96 | ##-- objects putty puttytel pscp psftp plink |
a9422f39 |
97 | MOBJS = misc.$(OBJ) version.$(OBJ) winstore.$(OBJ) settings.$(OBJ) |
8df7a775 |
98 | MOBJ2 = tree234.$(OBJ) |
4a8fc3c4 |
99 | ##-- objects putty pscp psftp plink |
89ee5268 |
100 | OBJS1 = sshcrc.$(OBJ) sshdes.$(OBJ) sshmd5.$(OBJ) sshrsa.$(OBJ) sshrand.$(OBJ) |
e5574168 |
101 | OBJS2 = sshsha.$(OBJ) sshblowf.$(OBJ) noise.$(OBJ) sshdh.$(OBJ) sshdss.$(OBJ) |
4ba9b64b |
102 | OBJS3 = sshbn.$(OBJ) sshpubk.$(OBJ) ssh.$(OBJ) pageantc.$(OBJ) sshzlib.$(OBJ) |
f26d5c33 |
103 | OBJS4 = x11fwd.$(OBJ) portfwd.$(OBJ) sshaes.$(OBJ) |
5c58ad2d |
104 | ##-- objects pageant |
105 | PAGE1 = pageant.$(OBJ) sshrsa.$(OBJ) sshpubk.$(OBJ) sshdes.$(OBJ) sshbn.$(OBJ) |
8479e33c |
106 | PAGE2 = sshmd5.$(OBJ) version.$(OBJ) tree234.$(OBJ) misc.$(OBJ) sshaes.$(OBJ) |
ddecd643 |
107 | PAGE3 = sshsha.$(OBJ) pageantc.$(OBJ) |
6e522441 |
108 | ##-- objects puttygen |
109 | GEN1 = puttygen.$(OBJ) sshrsag.$(OBJ) sshprime.$(OBJ) sshdes.$(OBJ) |
110 | GEN2 = sshbn.$(OBJ) sshmd5.$(OBJ) version.$(OBJ) sshrand.$(OBJ) noise.$(OBJ) |
111 | GEN3 = sshsha.$(OBJ) winstore.$(OBJ) misc.$(OBJ) winctrls.$(OBJ) |
8479e33c |
112 | GEN4 = sshrsa.$(OBJ) sshpubk.$(OBJ) sshaes.$(OBJ) |
9d01fc92 |
113 | ##-- resources putty puttytel |
3d541627 |
114 | PRESRC = win_res.$(RES) |
5c58ad2d |
115 | ##-- resources pageant |
116 | PAGERC = pageant.$(RES) |
6e522441 |
117 | ##-- resources puttygen |
118 | GENRC = puttygen.$(RES) |
4a8fc3c4 |
119 | ##-- resources pscp psftp |
3d541627 |
120 | SRESRC = scp.$(RES) |
4017be6d |
121 | ##-- resources plink |
122 | LRESRC = plink.$(RES) |
3d541627 |
123 | ##-- |
124 | |
125 | ##-- gui-apps |
126 | # putty |
89ee5268 |
127 | # puttytel |
5c58ad2d |
128 | # pageant |
6e522441 |
129 | # puttygen |
3d541627 |
130 | ##-- console-apps |
131 | # pscp |
4a8fc3c4 |
132 | # psftp |
6d2d5e8d |
133 | # plink ws2_32 |
3d541627 |
134 | ##-- |
135 | |
374330e2 |
136 | LIBS1 = advapi32.lib user32.lib gdi32.lib |
4017be6d |
137 | LIBS2 = comctl32.lib comdlg32.lib |
88485e4d |
138 | LIBS3 = shell32.lib winmm.lib imm32.lib |
4017be6d |
139 | SOCK1 = wsock32.lib |
140 | SOCK2 = ws2_32.lib |
4585985c |
141 | |
79fc73e2 |
142 | all: putty.exe puttytel.exe pscp.exe psftp.exe \ |
143 | plink.exe pageant.exe puttygen.exe |
89ee5268 |
144 | |
9c964e85 |
145 | putty.exe: $(GOBJS1) $(GOBJS2) $(LOBJS1) $(POBJS) $(MOBJS) $(MOBJ2) $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(PRESRC) putty.rsp |
4491fef5 |
146 | link $(LFLAGS) -out:putty.exe -map:putty.map @putty.rsp |
89ee5268 |
147 | |
8df7a775 |
148 | puttytel.exe: $(GOBJS1) $(GOBJS2) $(LOBJS1) $(TOBJS) $(MOBJS) $(MOBJ2) $(PRESRC) puttytel.rsp |
4491fef5 |
149 | link $(LFLAGS) -out:puttytel.exe -map:puttytel.map @puttytel.rsp |
89ee5268 |
150 | |
afc47154 |
151 | pageant.exe: $(PAGE1) $(PAGE2) $(PAGE3) $(PAGERC) pageant.rsp |
4491fef5 |
152 | link $(LFLAGS) -out:pageant.exe -map:pageant.map @pageant.rsp |
5c58ad2d |
153 | |
6e522441 |
154 | puttygen.exe: $(GEN1) $(GEN2) $(GEN3) $(GEN4) $(GENRC) puttygen.rsp |
4491fef5 |
155 | link $(LFLAGS) -out:puttygen.exe -map:puttygen.map @puttygen.rsp |
6e522441 |
156 | |
fd5e5847 |
157 | pscp.exe: $(SOBJS) $(SFOBJS) $(MOBJS) $(MOBJ2) $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(SRESRC) pscp.rsp |
4491fef5 |
158 | link $(LFLAGS) -out:pscp.exe -map:pscp.map @pscp.rsp |
89ee5268 |
159 | |
fd5e5847 |
160 | psftp.exe: $(FOBJS) $(SFOBJS) $(MOBJS) $(MOBJ2) $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(SRESRC) psftp.rsp |
79fc73e2 |
161 | link $(LFLAGS) -out:psftp.exe -map:psftp.map @psftp.rsp |
162 | |
9c964e85 |
163 | plink.exe: $(LOBJS1) $(POBJS) $(PLOBJS) $(MOBJS) $(MOBJ2) $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(LRESRC) plink.rsp |
4491fef5 |
164 | link $(LFLAGS) -out:plink.exe -map:plink.map @plink.rsp |
4017be6d |
165 | |
d9027fbd |
166 | ssh.obj: |
167 | cl $(FWHACK) $(VER) $(CFLAGS) /Gi- /c ssh.c |
168 | |
89ee5268 |
169 | putty.rsp: makefile |
170 | echo /nologo /subsystem:windows > putty.rsp |
171 | echo $(GOBJS1) >> putty.rsp |
172 | echo $(GOBJS2) >> putty.rsp |
4017be6d |
173 | echo $(LOBJS1) >> putty.rsp |
89ee5268 |
174 | echo $(POBJS) >> putty.rsp |
175 | echo $(MOBJS) >> putty.rsp |
8df7a775 |
176 | echo $(MOBJ2) >> putty.rsp |
89ee5268 |
177 | echo $(OBJS1) >> putty.rsp |
178 | echo $(OBJS2) >> putty.rsp |
e5574168 |
179 | echo $(OBJS3) >> putty.rsp |
9c964e85 |
180 | echo $(OBJS4) >> putty.rsp |
89ee5268 |
181 | echo $(PRESRC) >> putty.rsp |
182 | echo $(LIBS1) >> putty.rsp |
183 | echo $(LIBS2) >> putty.rsp |
defab6b8 |
184 | echo $(LIBS3) >> putty.rsp |
4017be6d |
185 | echo $(SOCK1) >> putty.rsp |
89ee5268 |
186 | |
187 | puttytel.rsp: makefile |
188 | echo /nologo /subsystem:windows > puttytel.rsp |
189 | echo $(GOBJS1) >> puttytel.rsp |
190 | echo $(GOBJS2) >> puttytel.rsp |
4017be6d |
191 | echo $(LOBJS1) >> puttytel.rsp |
89ee5268 |
192 | echo $(TOBJS) >> puttytel.rsp |
193 | echo $(MOBJS) >> puttytel.rsp |
8df7a775 |
194 | echo $(MOBJ2) >> puttytel.rsp |
9d01fc92 |
195 | echo $(PRESRC) >> puttytel.rsp |
89ee5268 |
196 | echo $(LIBS1) >> puttytel.rsp |
197 | echo $(LIBS2) >> puttytel.rsp |
defab6b8 |
198 | echo $(LIBS3) >> puttytel.rsp |
4017be6d |
199 | echo $(SOCK1) >> puttytel.rsp |
89ee5268 |
200 | |
5c58ad2d |
201 | pageant.rsp: makefile |
202 | echo /nologo /subsystem:windows > pageant.rsp |
6e522441 |
203 | echo $(PAGE1) >> pageant.rsp |
204 | echo $(PAGE2) >> pageant.rsp |
afc47154 |
205 | echo $(PAGE3) >> pageant.rsp |
6e522441 |
206 | echo $(PAGERC) >> pageant.rsp |
5c58ad2d |
207 | echo $(LIBS1) >> pageant.rsp |
208 | echo $(LIBS2) >> pageant.rsp |
209 | echo $(LIBS3) >> pageant.rsp |
210 | |
6e522441 |
211 | puttygen.rsp: makefile |
212 | echo /nologo /subsystem:windows > puttygen.rsp |
213 | echo $(GEN1) >> puttygen.rsp |
214 | echo $(GEN2) >> puttygen.rsp |
215 | echo $(GEN3) >> puttygen.rsp |
216 | echo $(GEN4) >> puttygen.rsp |
217 | echo $(GENRC) >> puttygen.rsp |
218 | echo $(LIBS1) >> puttygen.rsp |
219 | echo $(LIBS2) >> puttygen.rsp |
220 | echo $(LIBS3) >> puttygen.rsp |
221 | |
89ee5268 |
222 | pscp.rsp: makefile |
223 | echo /nologo /subsystem:console > pscp.rsp |
224 | echo $(SOBJS) >> pscp.rsp |
fd5e5847 |
225 | echo $(SFOBJS) >> pscp.rsp |
89ee5268 |
226 | echo $(MOBJS) >> pscp.rsp |
8df7a775 |
227 | echo $(MOBJ2) >> pscp.rsp |
89ee5268 |
228 | echo $(OBJS1) >> pscp.rsp |
229 | echo $(OBJS2) >> pscp.rsp |
e5574168 |
230 | echo $(OBJS3) >> pscp.rsp |
9c964e85 |
231 | echo $(OBJS4) >> pscp.rsp |
89ee5268 |
232 | echo $(SRESRC) >> pscp.rsp |
233 | echo $(LIBS1) >> pscp.rsp |
234 | echo $(LIBS2) >> pscp.rsp |
4017be6d |
235 | echo $(SOCK1) >> pscp.rsp |
236 | |
79fc73e2 |
237 | psftp.rsp: makefile |
238 | echo /nologo /subsystem:console > psftp.rsp |
239 | echo $(FOBJS) >> psftp.rsp |
fd5e5847 |
240 | echo $(SFOBJS) >> psftp.rsp |
79fc73e2 |
241 | echo $(MOBJS) >> psftp.rsp |
242 | echo $(MOBJ2) >> psftp.rsp |
243 | echo $(OBJS1) >> psftp.rsp |
244 | echo $(OBJS2) >> psftp.rsp |
245 | echo $(OBJS3) >> psftp.rsp |
246 | echo $(OBJS4) >> psftp.rsp |
247 | echo $(SRESRC) >> psftp.rsp |
248 | echo $(LIBS1) >> psftp.rsp |
249 | echo $(LIBS2) >> psftp.rsp |
250 | echo $(SOCK1) >> psftp.rsp |
251 | |
4017be6d |
252 | plink.rsp: makefile |
253 | echo /nologo /subsystem:console > plink.rsp |
254 | echo $(LOBJS1) >> plink.rsp |
255 | echo $(POBJS) >> plink.rsp |
256 | echo $(PLOBJS) >> plink.rsp |
257 | echo $(MOBJS) >> plink.rsp |
8df7a775 |
258 | echo $(MOBJ2) >> plink.rsp |
4017be6d |
259 | echo $(OBJS1) >> plink.rsp |
260 | echo $(OBJS2) >> plink.rsp |
261 | echo $(OBJS3) >> plink.rsp |
9c964e85 |
262 | echo $(OBJS4) >> plink.rsp |
4017be6d |
263 | echo $(LRESRC) >> plink.rsp |
264 | echo $(LIBS1) >> plink.rsp |
265 | echo $(LIBS2) >> plink.rsp |
266 | echo $(SOCK2) >> plink.rsp |
3d541627 |
267 | |
268 | ##-- dependencies |
8a23a541 |
269 | be_all.$(OBJ): be_all.c network.h puttymem.h putty.h |
270 | be_none.$(OBJ): be_none.c network.h puttymem.h putty.h |
271 | be_nossh.$(OBJ): be_nossh.c network.h puttymem.h putty.h |
272 | bntest.$(OBJ): bntest.c puttymem.h ssh.h |
273 | int64.$(OBJ): int64.c |
274 | ldisc.$(OBJ): ldisc.c network.h puttymem.h putty.h |
275 | misc.$(OBJ): misc.c network.h puttymem.h putty.h |
276 | mscrypto.$(OBJ): mscrypto.c puttymem.h ssh.h |
277 | noise.$(OBJ): noise.c network.h puttymem.h storage.h ssh.h putty.h |
278 | pageant.$(OBJ): pageant.c puttymem.h ssh.h tree234.h |
279 | pageantc.$(OBJ): pageantc.c puttymem.h |
280 | plink.$(OBJ): plink.c network.h puttymem.h storage.h putty.h tree234.h |
281 | psftp.$(OBJ): psftp.c network.h puttymem.h int64.h sftp.h storage.h ssh.h putty.h |
282 | puttygen.$(OBJ): puttygen.c network.h puttymem.h winstuff.h ssh.h putty.h |
283 | raw.$(OBJ): raw.c network.h puttymem.h putty.h |
284 | rlogin.$(OBJ): rlogin.c network.h puttymem.h putty.h |
285 | scp.$(OBJ): scp.c network.h puttymem.h storage.h winstuff.h putty.h |
286 | settings.$(OBJ): settings.c network.h puttymem.h storage.h putty.h |
287 | sftp.$(OBJ): sftp.c sftp.h int64.h |
288 | sizetip.$(OBJ): sizetip.c network.h puttymem.h winstuff.h putty.h |
289 | ssh.$(OBJ): ssh.c network.h puttymem.h ssh.h putty.h tree234.h |
290 | sshaes.$(OBJ): sshaes.c puttymem.h ssh.h |
291 | sshblowf.$(OBJ): sshblowf.c puttymem.h ssh.h |
292 | sshbn.$(OBJ): sshbn.c network.h puttymem.h ssh.h putty.h |
293 | sshcrc.$(OBJ): sshcrc.c |
294 | sshdes.$(OBJ): sshdes.c puttymem.h ssh.h |
295 | sshdh.$(OBJ): sshdh.c puttymem.h ssh.h |
296 | sshdss.$(OBJ): sshdss.c puttymem.h ssh.h |
297 | sshmd5.$(OBJ): sshmd5.c puttymem.h ssh.h |
298 | sshprime.$(OBJ): sshprime.c puttymem.h ssh.h |
299 | sshpubk.$(OBJ): sshpubk.c puttymem.h ssh.h |
300 | sshrand.$(OBJ): sshrand.c puttymem.h ssh.h |
301 | sshrsa.$(OBJ): sshrsa.c puttymem.h ssh.h |
302 | sshrsag.$(OBJ): sshrsag.c puttymem.h ssh.h |
303 | sshsha.$(OBJ): sshsha.c puttymem.h ssh.h |
304 | sshzlib.$(OBJ): sshzlib.c network.h puttymem.h ssh.h putty.h |
305 | telnet.$(OBJ): telnet.c network.h puttymem.h putty.h |
306 | terminal.$(OBJ): terminal.c network.h puttymem.h putty.h tree234.h |
307 | tree234.$(OBJ): tree234.c tree234.h |
308 | version.$(OBJ): version.c |
309 | winctrls.$(OBJ): winctrls.c winstuff.h |
310 | windlg.$(OBJ): windlg.c network.h puttymem.h storage.h winstuff.h putty.h ssh.h win_res.h |
311 | window.$(OBJ): window.c network.h puttymem.h storage.h winstuff.h putty.h win_res.h |
312 | winnet.$(OBJ): winnet.c network.h puttymem.h putty.h tree234.h |
313 | winstore.$(OBJ): winstore.c network.h puttymem.h storage.h putty.h |
d74d141c |
314 | x11fwd.$(OBJ): x11fwd.c network.h puttymem.h ssh.h putty.h |
f26d5c33 |
315 | portfwd.$(OBJ): portfwd.c network.h puttymem.h ssh.h putty.h |
8a23a541 |
316 | xlat.$(OBJ): xlat.c network.h puttymem.h putty.h |
3d541627 |
317 | ##-- |
067a15ea |
318 | |
319 | # Hack to force version.obj to be rebuilt always |
d9027fbd |
320 | version.obj: *.c *.h *.rc |
067a15ea |
321 | cl $(FWHACK) $(VER) $(CFLAGS) /c version.c |
374330e2 |
322 | |
3d541627 |
323 | ##-- dependencies |
324 | win_res.$(RES): win_res.rc win_res.h putty.ico |
325 | ##-- |
326 | win_res.$(RES): |
6ed3635b |
327 | rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 win_res.rc |
374330e2 |
328 | |
3d541627 |
329 | ##-- dependencies |
330 | scp.$(RES): scp.rc scp.ico |
331 | ##-- |
332 | scp.$(RES): |
6ed3635b |
333 | rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 scp.rc |
4585985c |
334 | |
5c58ad2d |
335 | ##-- dependencies |
336 | pageant.$(RES): pageant.rc pageant.ico pageants.ico |
337 | ##-- |
338 | pageant.$(RES): |
339 | rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 pageant.rc |
340 | |
6e522441 |
341 | ##-- dependencies |
342 | puttygen.$(RES): puttygen.rc puttygen.ico |
343 | ##-- |
344 | puttygen.$(RES): |
345 | rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 puttygen.rc |
346 | |
1a5adedf |
347 | clean: tidy |
d9027fbd |
348 | -del *.exe |
1a5adedf |
349 | |
350 | tidy: |
d9027fbd |
351 | -del *.obj |
352 | -del *.res |
353 | -del *.pch |
354 | -del *.aps |
355 | -del *.ilk |
356 | -del *.pdb |
357 | -del *.rsp |
358 | -del *.dsp |
359 | -del *.dsw |
360 | -del *.ncb |
361 | -del *.opt |
362 | -del *.plg |
363 | -del *.map |
364 | -del *.idb |
365 | -del debug.log |