1# $LynxId: makefile.msc,v 1.31 2018/02/17 17:17:38 tom Exp $
2#
3# Makefile for `Lynx' browser for Microsoft Visual C++ 4.2 or later
4#
5
6###############################################################################
7# These are the symbols that you may wish to set on the command line:
8#	DEBUG    - nonempty for debugging
9#	ETC_LIB  - the directory containing PDCurses and ZLib (libraries and headers)
10#	OPT_CS   - nonempty to use color-style
11#	OPT_SOCK - nonempty to build with winsock2
12#	OPT_SSL  - nonempty to build with OpenSSL
13#	SSL_DIR  - directory containing OpenSSL
14#	SCREEN   - name of screen-library (pdcurses)
15#	PROGNAME - name of executable (lynx.exe)
16###############################################################################
17
18CC       = cl
19LD       = link
20
21SRC_DIR = src
22WWW_DIR = WWW\Library\Implementation
23
24# pdcurses.lib panel.lib dirent.obj curses.h panel.h dirent.h
25!if "$(ETC_LIB)" == ""
26ETC_LIB = lib
27!endif
28
29# Select a screen-library
30!if "$(SCREEN)" == ""
31SCREEN = pdcurses
32!endif
33
34# Enable the CS_DEFS and CS_OBJS lines if you wish to build the color-style
35# configuration.
36!if "$(OPT_CS)" != ""
37CS_DEFS = /D "CHAR_BIT=8" /D "USE_COLOR_STYLE"
38CS_OBJS = "LYHash.obj" "LYStyle.obj"
39!endif
40
41# Enable SOCK_DEFS if you wish to build with winsock2.
42!if "$(OPT_SOCK)" != ""
43SOCK_DEFS = /D "USE_WINSOCK2_H" /D "_WIN32_WINNT=0x0400"
44!endif
45
46# Enable these to build with OpenSSL, overriding SSL_DIR, etc., as needed.
47!if "$(OPT_SSL)" != ""
48!if "$(SSL_DIR)" == ""
49SSL_DIR = C:\OpenSSL
50!endif
51!if "$(SSL_DEFS)" == ""
52SSL_DEFS = /D "USE_SSL" -I "$(SSL_DIR)\include" -I"$(SSL_DIR)\include\openssl"
53!endif
54!if "$(SSL_LIBS)" == ""
55SSL_LIBS = "$(SSL_DIR)\lib\ssleay32.lib" "$(SSL_DIR)\lib\libeay32.lib"
56!endif
57!endif
58
59!if "$(SCREEN)" == "pdcurses"
60SCREEN_DEFS = /D "PDCURSES" /D "COLOR_CURSES" /D "FANCY_CURSES" /D "WIDE_CURSES"
61SCREEN_LIB  = pdcurses
62!else
63SCREEN_DEFS = /D "USE_SLANG"
64# FIXME /D "SLANG_DLL"
65SCREEN_LIB  = wslang32
66!endif
67
68INCLUDES = \
69 /I "." \
70 /I "$(SRC_DIR)" \
71 /I "$(SRC_DIR)\chrtrans" \
72 /I "$(WWW_DIR)" \
73 /I "$(ETC_LIB)"
74DEFS = /D "WIN32_LEAN_AND_MEAN" $(CS_DEFS) $(SOCK_DEFS) $(SSL_DEFS) $(SCREEN_DEFS) \
75 /D "ACCESS_AUTH" \
76 /D "CJK_EX" \
77 /D "DIRED_SUPPORT" \
78 /D "DISP_PARTIAL" \
79 /D "DONT_HAVE_TM_GMTOFF" \
80 /D "DOSPATH" \
81 /D "USE_ALT_BINDINGS" \
82 /D "EXP_NESTED_TABLES" \
83 /D "HAVE_KEYPAD" \
84 /D "LONG_LIST" \
85 /D "NDEBUG" \
86 /D "NOSIGHUP" \
87 /D "NOUSERS" \
88 /D "NO_CONFIG_INFO" \
89 /D "NO_CUSERID" \
90 /D "NO_FILIO_H" \
91 /D "NO_TTYTYPE" \
92 /D "NO_UNISTD_H" \
93 /D "NO_UTMP" \
94 /D "OK_OVERRIDE" \
95 /D "SH_EX" \
96 /D "USE_CMD_LOGGING" \
97 /D "USE_EXTERNALS" \
98 /D "USE_FILE_UPLOAD" \
99 /D "USE_JUSTIFY_ELTS" \
100 /D "USE_MULTIBYTE_CURSES" \
101 /D "USE_PERSISTENT_COOKIES" \
102 /D "USE_PRETTYSRC" \
103 /D "USE_READPROGRESS" \
104 /D "USE_SCROLLBAR" \
105 /D "USE_SOURCE_CACHE" \
106 /D "USE_BZLIB" \
107 /D "USE_ZLIB" \
108 /D "WIN32" \
109 /D "WIN_EX" \
110 /D "_CONSOLE" \
111 /D "_MBCS" \
112 /D "_WINDOWS" \
113 /D "__WIN32__" \
114 /D LY_MAXPATH="1024"  \
115 /D _WIN_CC="1" \
116 /D VC="2.14FM"
117
118# /GX == /EHsc ==
119# /EHs enable C++ EH (no SEH exceptions)  /EHa enable C++ EH (w/ SEH exceptions)
120# /EHc extern "C" defaults to nothrow
121MACHINE  = i386
122!if "$(DEBUG)" == ""
123CFLAGS   = /nologo /MT /W3 /EHsc /O2 /c
124LDFLAGS  = /nologo /subsystem:console /incremental:no /machine:$(MACHINE)
125!else
126CFLAGS   = /nologo /MT /W3 /EHsc /Zi /c
127LDFLAGS  = /debug /nologo /subsystem:console /incremental:no /machine:$(MACHINE)
128!endif
129
130LIBS     = kernel32.lib user32.lib wsock32.lib advapi32.lib /NODEFAULTLIB:libc\
131 $(ETC_LIB)\$(SCREEN_LIB).lib $(ETC_LIB)\libbz2.lib $(ETC_LIB)\zlib.lib dirent.obj $(SSL_LIBS)
132
133COMPILE = $(CC) $(CFLAGS) $(INCLUDES) $(DEFS)
134LINK    = $(LD) $(LDFLAGS) /map:lynx.map /out:$@
135
136OBJS = $(CS_OBJS) \
137	"DefaultStyle.obj" \
138	"GridText.obj" \
139	"HTAABrow.obj" \
140	"HTAAProt.obj" \
141	"HTAAUtil.obj" \
142	"HTAccess.obj" \
143	"HTAlert.obj" \
144	"HTAnchor.obj" \
145	"HTAssoc.obj" \
146	"HTAtom.obj" \
147	"HTBTree.obj" \
148	"HTChunk.obj" \
149	"HTDOS.obj" \
150	"HTFTP.obj" \
151	"HTFWriter.obj" \
152	"HTFile.obj" \
153	"HTFinger.obj" \
154	"HTFormat.obj" \
155	"HTGopher.obj" \
156	"HTGroup.obj" \
157	"HTInit.obj" \
158	"HTLex.obj" \
159	"HTList.obj" \
160	"HTMIME.obj" \
161	"HTML.obj" \
162	"HTMLDTD.obj" \
163	"HTMLGen.obj" \
164	"HTNews.obj" \
165	"HTParse.obj" \
166	"HTPlain.obj" \
167	"HTRules.obj" \
168	"HTString.obj" \
169	"HTStyle.obj" \
170	"HTTCP.obj" \
171	"HTTP.obj" \
172	"HTTelnet.obj" \
173	"HTUU.obj" \
174	"HTWSRC.obj" \
175	"LYBookmark.obj" \
176	"LYCgi.obj" \
177	"LYCharSets.obj" \
178	"LYCharUtils.obj" \
179	"LYClean.obj" \
180	"LYCookie.obj" \
181	"LYCurses.obj" \
182	"LYDownload.obj" \
183	"LYEdit.obj" \
184	"LYEditmap.obj" \
185	"LYExtern.obj" \
186	"LYForms.obj" \
187	"LYGetFile.obj" \
188	"LYHistory.obj" \
189	"LYJump.obj" \
190	"LYKeymap.obj" \
191	"LYLeaks.obj" \
192	"LYList.obj" \
193	"LYLocal.obj" \
194	"LYMail.obj" \
195	"LYMain.obj" \
196	"LYMainLoop.obj" \
197	"LYMap.obj" \
198	"LYNews.obj" \
199	"LYOptions.obj" \
200	"LYPrettySrc.obj" \
201	"LYPrint.obj" \
202	"LYReadCFG.obj" \
203	"LYSearch.obj" \
204	"LYSession.obj" \
205	"LYShowInfo.obj" \
206	"LYStrings.obj" \
207	"LYTraversal.obj" \
208	"LYUpload.obj" \
209	"LYUtils.obj" \
210	"parsdate.obj" \
211	"LYexit.obj" \
212	"LYmktime.obj" \
213	"LYrcFile.obj" \
214	"SGML.obj" \
215	"TRSTable.obj" \
216	"UCAuto.obj" \
217	"UCAux.obj" \
218	"UCdomap.obj" \
219	"Xsystem.obj" \
220	"LYIcon.obj"
221
222
223# Dependencies for building
224
225.SUFFIXES : .i
226.c.i :
227	$(CC) $(INCLUDES) $(DEFS) /P $<
228
229!if "$(PROGNAME)" == ""
230PROGNAME = lynx.exe
231!endif
232
233all : $(PROGNAME)
234
235clean :
236	-del *.map
237	-del *.obj
238	-del *.res
239	-del/f/s/q *.i
240
241$(PROGNAME) : $(OBJS) dirent.obj
242	$(LINK) $(OBJS) $(LIBS)
243
244DefaultStyle.obj : $(SRC_DIR)\DefaultStyle.c
245	$(COMPILE) $(SRC_DIR)\DefaultStyle.c
246
247GridText.obj : $(SRC_DIR)\GridText.c
248	$(COMPILE) $(SRC_DIR)\GridText.c
249
250HTAlert.obj : $(SRC_DIR)\HTAlert.c
251	$(COMPILE) $(SRC_DIR)\HTAlert.c
252
253HTFWriter.obj : $(SRC_DIR)\HTFWriter.c
254	$(COMPILE) $(SRC_DIR)\HTFWriter.c
255
256HTInit.obj : $(SRC_DIR)\HTInit.c
257	$(COMPILE) $(SRC_DIR)\HTInit.c
258
259HTML.obj : $(SRC_DIR)\HTML.c
260	$(COMPILE) $(SRC_DIR)\HTML.c
261
262LYBookmark.obj : $(SRC_DIR)\LYBookmark.c
263	$(COMPILE) $(SRC_DIR)\LYBookmark.c
264
265LYCgi.obj : $(SRC_DIR)\LYCgi.c
266	$(COMPILE) $(SRC_DIR)\LYCgi.c
267
268LYCharSets.obj : $(SRC_DIR)\LYCharSets.c
269	$(COMPILE) $(SRC_DIR)\LYCharSets.c
270
271LYCharUtils.obj : $(SRC_DIR)\LYCharUtils.c
272	$(COMPILE) $(SRC_DIR)\LYCharUtils.c
273
274LYClean.obj : $(SRC_DIR)\LYClean.c
275	$(COMPILE) $(SRC_DIR)\LYClean.c
276
277LYCookie.obj : $(SRC_DIR)\LYCookie.c
278	$(COMPILE) $(SRC_DIR)\LYCookie.c
279
280LYCurses.obj : $(SRC_DIR)\LYCurses.c
281	$(COMPILE) $(SRC_DIR)\LYCurses.c
282
283LYDownload.obj : $(SRC_DIR)\LYDownload.c
284	$(COMPILE) $(SRC_DIR)\LYDownload.c
285
286LYEdit.obj : $(SRC_DIR)\LYEdit.c
287	$(COMPILE) $(SRC_DIR)\LYEdit.c
288
289LYEditmap.obj : $(SRC_DIR)\LYEditmap.c
290	$(COMPILE) $(SRC_DIR)\LYEditmap.c
291
292LYexit.obj : $(SRC_DIR)\LYexit.c
293	$(COMPILE) $(SRC_DIR)\LYexit.c
294
295LYExtern.obj : $(SRC_DIR)\LYExtern.c
296	$(COMPILE) $(SRC_DIR)\LYExtern.c
297
298LYForms.obj : $(SRC_DIR)\LYForms.c
299	$(COMPILE) $(SRC_DIR)\LYForms.c
300
301LYGetFile.obj : $(SRC_DIR)\LYGetFile.c
302	$(COMPILE) $(SRC_DIR)\LYGetFile.c
303
304LYHash.obj : $(SRC_DIR)\LYHash.c
305	$(COMPILE) $(SRC_DIR)\LYHash.c
306
307LYHistory.obj : $(SRC_DIR)\LYHistory.c
308	$(COMPILE) $(SRC_DIR)\LYHistory.c
309
310LYJump.obj : $(SRC_DIR)\LYJump.c
311	$(COMPILE) $(SRC_DIR)\LYJump.c
312
313LYKeymap.obj : $(SRC_DIR)\LYKeymap.c
314	$(COMPILE) $(SRC_DIR)\LYKeymap.c
315
316LYLeaks.obj : $(SRC_DIR)\LYLeaks.c
317	$(COMPILE) $(SRC_DIR)\LYLeaks.c
318
319LYList.obj : $(SRC_DIR)\LYList.c
320	$(COMPILE) $(SRC_DIR)\LYList.c
321
322LYLocal.obj : $(SRC_DIR)\LYLocal.c
323	$(COMPILE) $(SRC_DIR)\LYLocal.c
324
325LYMail.obj : $(SRC_DIR)\LYMail.c
326	$(COMPILE) $(SRC_DIR)\LYMail.c
327
328LYMain.obj : $(SRC_DIR)\LYMain.c
329	$(COMPILE) $(SRC_DIR)\LYMain.c
330
331LYMainLoop.obj : $(SRC_DIR)\LYMainLoop.c
332	$(COMPILE) $(SRC_DIR)\LYMainLoop.c
333
334LYMap.obj : $(SRC_DIR)\LYMap.c
335	$(COMPILE) $(SRC_DIR)\LYMap.c
336
337LYNews.obj : $(SRC_DIR)\LYNews.c
338	$(COMPILE) $(SRC_DIR)\LYNews.c
339
340LYOptions.obj : $(SRC_DIR)\LYOptions.c
341	$(COMPILE) $(SRC_DIR)\LYOptions.c
342
343LYPrettySrc.obj : $(SRC_DIR)\LYPrettySrc.c
344	$(COMPILE) $(SRC_DIR)\LYPrettySrc.c
345
346LYPrint.obj : $(SRC_DIR)\LYPrint.c
347	$(COMPILE) $(SRC_DIR)\LYPrint.c
348
349LYmktime.obj : $(SRC_DIR)\LYmktime.c
350	$(COMPILE) $(SRC_DIR)\LYmktime.c
351
352LYrcFile.obj : $(SRC_DIR)\LYrcFile.c
353	$(COMPILE) $(SRC_DIR)\LYrcFile.c
354
355LYReadCFG.obj : $(SRC_DIR)\LYReadCFG.c
356	$(COMPILE) $(SRC_DIR)\LYReadCFG.c
357
358LYSearch.obj : $(SRC_DIR)\LYSearch.c
359	$(COMPILE) $(SRC_DIR)\LYSearch.c
360
361LYSession.obj : $(SRC_DIR)\LYSession.c
362	$(COMPILE) $(SRC_DIR)\LYSession.c
363
364LYShowInfo.obj : $(SRC_DIR)\LYShowInfo.c
365	$(COMPILE) $(SRC_DIR)\LYShowInfo.c
366
367LYStrings.obj : $(SRC_DIR)\LYStrings.c
368	$(COMPILE) $(SRC_DIR)\LYStrings.c
369
370LYStyle.obj : $(SRC_DIR)\LYStyle.c
371	$(COMPILE) $(SRC_DIR)\LYStyle.c
372
373LYTraversal.obj : $(SRC_DIR)\LYTraversal.c
374	$(COMPILE) $(SRC_DIR)\LYTraversal.c
375
376LYUpload.obj : $(SRC_DIR)\LYUpload.c
377	$(COMPILE) $(SRC_DIR)\LYUpload.c
378
379LYUtils.obj : $(SRC_DIR)\LYUtils.c
380	$(COMPILE) $(SRC_DIR)\LYUtils.c
381
382parsdate.obj : $(SRC_DIR)\parsdate.c
383	$(COMPILE) $(SRC_DIR)\parsdate.c
384
385TRSTable.obj : $(SRC_DIR)\TRSTable.c
386	$(COMPILE) $(SRC_DIR)\TRSTable.c
387
388mktime.obj : $(SRC_DIR)\mktime.c
389	$(COMPILE) $(SRC_DIR)\mktime.c
390
391strstr.obj : $(SRC_DIR)\strstr.c
392	$(COMPILE) $(SRC_DIR)\strstr.c
393
394UCAuto.obj : $(SRC_DIR)\UCAuto.c
395	$(COMPILE) $(SRC_DIR)\UCAuto.c
396
397UCAux.obj : $(SRC_DIR)\UCAux.c
398	$(COMPILE) $(SRC_DIR)\UCAux.c
399
400UCdomap.obj : $(SRC_DIR)\UCdomap.c
401	$(COMPILE) $(SRC_DIR)\UCdomap.c
402
403Xsystem.obj : $(SRC_DIR)\Xsystem.c
404	$(COMPILE) $(SRC_DIR)\Xsystem.c
405
406LYIcon.obj : $(SRC_DIR)\LYIcon.rc
407	cd $(SRC_DIR)
408	$(RC) /r /fo ..\LYIcon.res LYIcon.rc
409	cd ..
410	cvtres /verbose /machine:$(MACHINE) LYIcon.res
411
412dirent.obj : $(ETC_LIB)\dirent.c
413	$(COMPILE) $(ETC_LIB)\dirent.c
414
415HTAABrow.obj : $(WWW_DIR)\HTAABrow.c
416	$(COMPILE) $(WWW_DIR)\HTAABrow.c
417
418HTAAFile.obj : $(WWW_DIR)\HTAAFile.c
419	$(COMPILE) $(WWW_DIR)\HTAAFile.c
420
421HTAAProt.obj : $(WWW_DIR)\HTAAProt.c
422	$(COMPILE) $(WWW_DIR)\HTAAProt.c
423
424HTAAUtil.obj : $(WWW_DIR)\HTAAUtil.c
425	$(COMPILE) $(WWW_DIR)\HTAAUtil.c
426
427HTAccess.obj : $(WWW_DIR)\HTAccess.c
428	$(COMPILE) $(WWW_DIR)\HTAccess.c
429
430HTAnchor.obj : $(WWW_DIR)\HTAnchor.c
431	$(COMPILE) $(WWW_DIR)\HTAnchor.c
432
433HTAssoc.obj : $(WWW_DIR)\HTAssoc.c
434	$(COMPILE) $(WWW_DIR)\HTAssoc.c
435
436HTAtom.obj : $(WWW_DIR)\HTAtom.c
437	$(COMPILE) $(WWW_DIR)\HTAtom.c
438
439HTBTree.obj : $(WWW_DIR)\HTBTree.c
440	$(COMPILE) $(WWW_DIR)\HTBTree.c
441
442HTChunk.obj : $(WWW_DIR)\HTChunk.c
443	$(COMPILE) $(WWW_DIR)\HTChunk.c
444
445HTDOS.obj : $(WWW_DIR)\HTDOS.c
446	$(COMPILE) $(WWW_DIR)\HTDOS.c
447
448HTFile.obj : $(WWW_DIR)\HTFile.c
449	$(COMPILE) $(WWW_DIR)\HTFile.c
450
451HTFinger.obj : $(WWW_DIR)\HTFinger.c
452	$(COMPILE) $(WWW_DIR)\HTFinger.c
453
454HTFormat.obj : $(WWW_DIR)\HTFormat.c
455	$(COMPILE) $(WWW_DIR)\HTFormat.c
456
457HTFTP.obj : $(WWW_DIR)\HTFTP.c
458	$(COMPILE) $(WWW_DIR)\HTFTP.c
459
460HTGopher.obj : $(WWW_DIR)\HTGopher.c
461	$(COMPILE) $(WWW_DIR)\HTGopher.c
462
463HTGroup.obj : $(WWW_DIR)\HTGroup.c
464	$(COMPILE) $(WWW_DIR)\HTGroup.c
465
466HTLex.obj : $(WWW_DIR)\HTLex.c
467	$(COMPILE) $(WWW_DIR)\HTLex.c
468
469HTList.obj : $(WWW_DIR)\HTList.c
470	$(COMPILE) $(WWW_DIR)\HTList.c
471
472HTMIME.obj : $(WWW_DIR)\HTMIME.c
473	$(COMPILE) $(WWW_DIR)\HTMIME.c
474
475HTMLDTD.obj : $(WWW_DIR)\HTMLDTD.c
476	$(COMPILE) $(WWW_DIR)\HTMLDTD.c
477
478HTMLGen.obj : $(WWW_DIR)\HTMLGen.c
479	$(COMPILE) $(WWW_DIR)\HTMLGen.c
480
481HTNews.obj : $(WWW_DIR)\HTNews.c
482	$(COMPILE) $(WWW_DIR)\HTNews.c
483
484HTParse.obj : $(WWW_DIR)\HTParse.c
485	$(COMPILE) $(WWW_DIR)\HTParse.c
486
487HTPlain.obj : $(WWW_DIR)\HTPlain.c
488	$(COMPILE) $(WWW_DIR)\HTPlain.c
489
490HTRules.obj : $(WWW_DIR)\HTRules.c
491	$(COMPILE) $(WWW_DIR)\HTRules.c
492
493HTString.obj : $(WWW_DIR)\HTString.c
494	$(COMPILE) $(WWW_DIR)\HTString.c
495
496HTStyle.obj : $(WWW_DIR)\HTStyle.c
497	$(COMPILE) $(WWW_DIR)\HTStyle.c
498
499HTTCP.obj : $(WWW_DIR)\HTTCP.c
500	$(COMPILE) $(WWW_DIR)\HTTCP.c
501
502HTTelnet.obj : $(WWW_DIR)\HTTelnet.c
503	$(COMPILE) $(WWW_DIR)\HTTelnet.c
504
505HTTP.obj : $(WWW_DIR)\HTTP.c
506	$(COMPILE) $(WWW_DIR)\HTTP.c
507
508HTUU.obj : $(WWW_DIR)\HTUU.c
509	$(COMPILE) $(WWW_DIR)\HTUU.c
510
511HTWSRC.obj : $(WWW_DIR)\HTWSRC.c
512	$(COMPILE) $(WWW_DIR)\HTWSRC.c
513
514SGML.obj : $(WWW_DIR)\SGML.c
515	$(COMPILE) $(WWW_DIR)\SGML.c
516