1
2                      Lynx Installation Guide
3
4This file describes how to compile and install Lynx.  A description of Lynx
5can be found in the README file.  Lynx has been ported to UN*X, VMS, Win32
6and 386DOS.  The procedures for compiling these ports are quite divergent
7and are detailed respectively in Sections II, III, IV and V.  General
8installation, problem solving and environment variables are covered in
9Sections VI and VII.  There is also a PROBLEMS file in the same directory
10as INSTALLATION which contains advice for special problems people have
11encountered, especially for particular machines and operating systems.
12
13If you still have difficulties, send an e-mail message to the Lynx-Dev mailing
14list (see the README file).  Try to include information about your system,
15the name and version of your compiler, which curses library you are using
16and the compile-time errors.  Be sure to say what version and image-number
17of Lynx you are trying to build (alternately the top date of the CHANGES file).
18
19If you don't understand what one of the defines means, try the README.defines
20and *.announce files in the docs subdirectory.  The docs/CHANGES* files record
21the entire development history of Lynx and are an invaluable resource for
22understanding how Lynx should perform.
23
24First, you must configure Lynx for your system regardless of the port you use.
25Follow the instructions given immediately below to configure for your system,
26and then go to the respective section concerning the port you wish to compile.
27
28-------------------------------------------------------------------------------
29
30I. General configuration instructions (all ports).
31
32Step 1.  Compile-time Variables.
33
34  There are a few variables that MUST be defined if Lynx is to build
35  and there are others you may want to change.
36
37  Lynx MUST be able to find lynx.cfg at start-up: using configure
38  (e.g. with UNIX or Cygwin), its location is best set with --sysconfdir ;
39  you can check in lynx_cfg.h after configure has run, if you wish.
40  otherwise, you can use LYNX_CFG_FILE in userdefs.h ,
41  environment variable LYNX_CFG or the -cfg command-line option.
42
43  If you are using configure, you need not make any changes in userdefs.h .
44  There are a few variables you can't define with configure --options
45  but can define in userdefs.h , e.g. numbering fields as well as links.
46  Many variables which can be defined with configure or  userdefs.h
47  can also be defined in lynx.cfg or via the Options Menu.
48
49  Lynx implements Native Language Support.  Read "ABOUT-NLS", if you want
50  to build an international version of Lynx or tailor status-line prompts,
51  messages and warnings to the requirements of your site.
52
53Step 2.  Run-time Variables.
54
55  Read  lynx.cfg  thoroughly, as many Lynx features and how to use them
56  are explained there, in some cases ONLY there.  Set up local printers,
57  downloaders, assumed character set, key mapping and colors in  lynx.cfg .
58  Also see the sample mime.types, mailcap and jumps files
59  in the samples subdirectory.
60
61Step 3.  Alternative Character Sets.
62
63  You may skip this, if you are not interested in special characters
64  and all local files or WWW pages you will view will use the ISO-8859-1
65  "ISO Latin 1" Western European character set.
66
67  If you will be running Lynx in an environment with different incompatible
68  character sets, configure CHARACTER_SET (the Display character set)
69  and ASSUME_LOCAL_CHARSET to work correctly before creating bookmark files
70  and other such items: read lynx.cfg for detailed instructions.
71  Additional character sets and their properties may be defined with tables
72  in the src/chrtrans directory: see the README.* files therein.
73
74Step 4.  News.
75
76  Set NNTPSERVER in lynx.cfg to your site's NNTP server
77  or set the environment variable externally.  For posting to be enabled,
78  NEWS_POSTING must be TRUE in userdefs.h or lynx.cfg.
79  Also define LYNX_SIG_FILE in userdefs.h or lynx.cfg ,
80  so that it points to users' signature files for appending to messages.
81
82Step 5.  Anonymous Accounts *** VERY IMPORTANT!!!!! ***
83
84  If you are building Lynx for personal use only, you can skip this.
85
86  If you are setting up anonymous accounts to use Lynx captively,
87  i.e. making Web access publicly available to users who should not
88  be allowed any other type of access to your system,
89  you are STRONGLY advised to use the -anonymous command-line option:
90  if you do not use this option, users may be able to gain access
91  to all readable files on your machine!
92
93  Many implementations of telnetd allow passing of environment variables,
94  which might be used to modify the environment in anonymous accounts,
95  allowing mischief or damage by malicious users, so make sure the wrapper
96  uses the -cfg and -homepage switches to specify  lynx.cfg  and start-file,
97  rather than relying on variables LYNX_CFG, LYNX_CFG_FILE and WWW_HOME.
98
99-------------------------------------------------------------------------------
100
101II. Compile instructions -- UNIX
102
1031a. Auto-configure.  The auto-configure script uses autoconf2.13 to generate a
104    Bourne shell script, configure, which creates "makefile" and "lynx_cfg.h".
105
106    If you are on a UNIX platform, the easiest way to build Lynx is to type:
107
108	    ./configure
109    and
110	    make
111
112    NOTE:  Configure has a number of useful options.  Please see below.
113
114    NOTE:  The 'configure' script generates auxiliary files "config.status"
115    "config.cache" and "config.log".  Normally you will not notice these;
116    they are created automatically and removed by a "make distclean".
117
118	+ If you wish to rebuild Lynx with a new host, or change ANY of the
119	  parameters which are stored in config.cache, you MUST first remove
120	  the config.cache file before running configure; its options do NOT
121	  override the settings in that file.
122
123	+ The config.status file is a script which creates (or regenerates)
124	  the files created by the configure script.
125
126    Please report problems in the configure/make process by including a copy
127    of config.status, config.cache and config.log, as well as the pertinent
128    compiler diagnostics.
129
130    See the note in aclocal.m4 for special instructions if you must modify the
131    configure script.
132
133    NOTE:  Lynx is a curses-based application, so you must have a curses
134    library available to link to.  Native curses (on the system when it was
135    installed) are often broken, so you may get superior performance if you
136    have either "ncurses" ("ftp://invisible-island.net/ncurses") or "slang"
137    ("ftp://space.mit.edu/pub/davis/slang").  If you install these libraries
138    in your home directory or a non-default location, you may need to set the
139    CPPFLAGS (full path to include files) and LIBS (full path to library files)
140    environment variables BEFORE running configure.  See "1d. Environment".
141    Use the "--with-screen=ncurses" or "--with-screen=slang" option.
142
143    Note that while lynx will build with a variety of versions of curses and
144    ncurses, some will be less satisfactory.  Versions of ncurses before
145    1.9.9g will not render color properly.  Some other versions of curses do
146    not display color at all.  Likewise, lynx may not build with old versions
147    of slang, e.g., before 0.99-38, because slang's interfaces change
148    periodically.
149
150    Note compiler/system specific problems below.  See also:
151	http://invisible-island.net/ncurses/ncurses.faq.html
152
1531b. Platforms.  Configure should work properly on any Unix-style system.
154    It has been tested on the following platforms.
155
156	AIX 3.2.5 (cc w/ curses)	BeOS 4.5 (gcc w/ ncurses)
157	CLIX (cc w/ curses & ncurses)	DGUX
158	Digital Unix 3.2C and 4.0 (gcc & cc w/ curses, ncurses & slang)
159	FreeBSD 2.1.5, 3.1 (gcc 2.6.3 w/ curses & ncurses)
160	HP-UX (K&R and ANSI cc, gcc w/ curses, ncurses & slang)
161	IRIX 5.2 and 6.2 (cc & gcc w/ curses, ncurses & slang)
162	Linux 2.0.0 (gcc 2.7.2 w/ curses, ncurses & slang)
163	MkLinux 2.1.5 (gcc 2.7.2.1)	NetBSD
164	NEXTSTEP 3.3 (gcc 2.7.2.3 w/ curses)
165	OS/2 EMX 0.9c (ncurses) 	SCO OpenServer (cc w/ curses)
166	Solaris 2.5, 2.6 & 2.7 (cc & gcc w/ curses, ncurses & slang)
167	SunOS 4.1 (cc w/ curses, gcc w/ ncurses & slang)
168	OS390 and BS2000.
169
170    NOTE:  SunOS and HP-UX come with a bundled K&R compiler, which is only
171    useful for compiling with the bundled curses.  Both ncurses and slang
172    require a compiler that recognizes prototypes.
173
1741c. Options
175    To get a list of the configure script's options, type "./configure --help".
176    Below is an alphabetical listing of the Lynx-specific options.  The actual
177    order shown by the -help option is different.  See "docs/README.defines"
178    for information on defines for which there are no option switches.
179
180  --datadir
181	Defines the location where you want the documentation files installed.
182	The configure script constructs makefile actions to install lynx.cfg
183	modified to reflect this in the HELPFILE setting.  (For platforms which
184	do not support a configure script, such as MS-DOS, Win32 and VMS, you
185	must edit lynx.cfg).
186
187  --disable-addrlist-page		(prevent defining USE_ADDRLIST_PAGE)
188	Turn off code that displays an alternative list-page, bound to 'A'
189	rather than 'l', which always lists URLs rather than titles.
190
191  --disable-alt-bindings 		(prevent defining USE_ALT_BINDINGS)
192	Compiles-in an alternative set of line-edit bindings, in addition
193	to the default bindings.
194
195  --disable-bibp-urls			(define DISABLE_BIBP)
196	Disable (do not compile code) support for bibp: URLs.
197
198  --disable-color-style			(define USE_COLOR_STYLE)
199	Use this option to disable optional color style.  This is implemented
200	for modern curses implementations, e.g., those that support color.
201
202	Before lynx 2.8.6dev.18, this option was disabled by default.
203	You can achieve a similar color effect to match the non-color-style
204	(but still allowing users to use color-style) by using the
205	--without-lss-file option.
206
207  --disable-config-info			(define NO_CONFIG_INFO)
208  	Use this option to disable extended browsable configuration information
209	(a screen that shows the result of the configuration script, as well
210	as extended lynx.cfg viewing with a pointer to the lynx.cfg file and
211	additional functionality).
212
213  --disable-dired			(prevent defining DIRED_SUPPORT)
214	Use this option to disable the optional directory-editor.
215
216	Lynx supports directory editing (DirEd) for local directories.
217	This allows users to do things like view, copy and remove files
218	using a tabular display of the directory and single-keystroke
219	commands instead of using the command line.  From inside Lynx, the
220	keystroke sequence "g.<enter>" switches Lynx to DirEd mode on the
221	current directory.  If you're building a Lynx that is to be used as
222	a kind of restricted shell for users who do not have access to the
223	command line and should not have access to equivalent capabilities,
224	you probably want to disable DirEd with this option.  You can also
225	disable some DirEd functions while allowing others.  If you have
226	disabled DirEd completely, you can ignore all the more specific
227	DirEd options.
228
229	All DirEd menu functions that were enabled on compilation can be
230	disabled or modified at run time via DIRED_MENU symbols in lynx.cfg.
231
232  --disable-dired-dearchive		(define ARCHIVE_ONLY)
233	Use this option to prevent DirEd from extracting files from an
234	archive file.
235
236  --disable-dired-gzip			(prevent defining OK_GZIP)
237	Use this option to prevent DirEd from using gzip and gunzip.
238
239  --disable-dired-override		(prevent defining OK_OVERRIDE)
240	Normally, in DirEd directory viewing mode some key mappings are
241	overridden.  Use this option to disable DirEd keymap overriding.
242
243  --disable-dired-permit		(prevent defining OK_PERMIT)
244	Use this option to prevent DirEd from changing the permissions
245	on directories or files (i.e., from doing what the Unix chmod
246	command or the DOS attrib command does).
247
248  --disable-dired-tar			(prevent defining OK_TAR)
249	Use this option to prevent DirEd from using the tar program.
250
251  --disable-dired-uudecode		(prevent defining OK_UUDECODE)
252	Use this option to prevent DirEd from using uudecode.
253
254  --disable-dired-xpermit		(define NO_CHANGE_EXECUTE_PERMS)
255	Use this option if you do not disable out the dired-permit
256	option, but want to restrict changes of the eXecute permission
257	to directories (i.e., not allow it to be changed for files).  If
258	you don't do this, you can still block changes of the eXecute
259	permission for files but not directories via the
260	"change_exec_perms" command line restriction.
261
262  --disable-dired-zip			(prevent defining OK_ZIP)
263	Use this option to prevent DirEd from using zip and unzip.
264
265  --disable-echo
266  	Use this option to suppress the "compiling" commands during a build.
267	Doing this makes it easier to find and read warning messages.
268
269  --disable-extended-dtd		(define NO_EXTENDED_HTMLDTD)
270	disable extended HTML DTD logic.  This should revert to old-style
271	(2.7.1/2.7.2) behavior, but is not well-tested.
272
273  --disable-file-upload			(define USE_FILE_UPLOAD)
274	Compile-in support for form-based file-upload.
275
276  --disable-finger			(define DISABLE_FINGER)
277	Do not compile-in code used to connect to "finger" URLs.
278
279  --disable-forms-options		(define NO_OPTION_FORMS)
280	Disable the Form-based Options Menu (see --disable-menu-options).
281	The default is to compile key-based & form-based Options Menu code,
282	allowing users the final choice via FORMS_OPTIONS in lynx.cfg
283	or the -forms_options command-line switch.
284
285  --disable-ftp				(define DISABLE_FTP)
286	Do not compile-in code used to connect to FTP servers.
287
288  --disable-full-paths
289  	Use this option to control whether full pathnames are compiled in for
290	various utilities invoked by lynx as external commands.  By default,
291	full pathnames are compiled in for the the locations where configure
292	finds these commands at configure time.  Affected commands are chmod,
293	compress, cp, gzip, install, mkdir, mv, rm, tar, touch, gunzip, unzip,
294	bzip2, uudecode, zcat, zip, telnet, tn3270, rlogin.  (Not all of them
295	are used on all systems or in all configurations.)
296
297	This option makes Lynx simpler to install, but potentially less secure,
298	since the commands are then set in the user's $PATH.  All of these
299	commands may also be overridden individually by setting environment
300	variables before configuring.  For example, you can disable the telnet
301	command by doing this:
302
303		setenv TELNET /bin/false
304
305  --disable-gopher			(define DISABLE_GOPHER)
306	Do not compile-in code used to connect to GOPHER servers.
307
308  --disable-idna
309	By default, the configure script searches for the GNU idn library,
310	which lets lynx translated URLs which are in UTF-8 to ASCII.  The
311	latter is needed for most network accesses.  Use this option to
312	suppress the feature, e.g., to reduce size.
313
314  --disable-included-msgs
315	Do not use included messages, for i18n support.  If NLS support is
316	requested, the configure script will otherwise use the messages in the
317	./po subdirectory.
318
319  --disable-justify-elts		(define USE_JUSTIFY_ELTS)
320	Do not use element-justification logic.
321
322  --disable-largefile			(prevent defining LONG_LIST)
323
324	Use this option to disable the compiler and linker options that
325	provide largefile interfaces.
326
327  --disable-long-list			(prevent defining LONG_LIST)
328	Use this option to disable long "ls -l" directory listings (when
329	enabled, the actual directory style is configurable from lynx.cfg).
330
331  --disable-menu-options		(define NO_OPTION_MENU)
332	Disable the Key-based Options Menu.
333	See --disable-forms-options (above) for further details.
334
335  --disable-news			(define DISABLE_NEWS)
336	Do not compile-in code used to connect to NNTP (netnews) servers.
337
338  --disable-parent-dir-refs		(define NO_PARENT_DIR_REFERENCE)
339  	Use this option to disable "Up-to" parent-links in directory listings.
340
341  --disable-partial			(prevent defining DISP_PARTIAL)
342	Turn off code that lets Lynx display parts of a long page while loading
343	it.
344
345  --disable-persistent-cookies		(prevent defining USE_PERSISTENT_COOKIES)
346	Turn off support for saving cookies to a file, for subsequent reuse.
347	Persistent cookie support will use (or create) the file specified by
348	the 'COOKIE_FILE' option, or default to ".lynx_cookies" in the home
349	directory.  (Currently there is no protection against conflict if
350	several lynx sessions are active from the same account).
351
352  --disable-prettysrc			(define USE_PRETTYSRC)
353	Turn off support for colorizing the source view of HTML pages.  If
354	compiled-in, new source view mode is available with -prettysrc command
355	line option.
356
357  --disable-progressbar			(define USE_PROGRESSBAR)
358	Turn off support for a "progress bar" which displays at the bottom
359	of the screen when doing downloads and other time-consuming (but
360	interruptible) processes.  This feature can be selected in the
361	options menu.
362
363  --disable-read-eta			(define USE_READPROGRESS)
364	Turn off enhanced read-progress message showing ETA (estimated time to
365	completion), as well as the amount of time stalled without any data
366	transferred.
367
368  --disable-rpath-hack
369	The rpath-hack makes it simpler to build programs, particularly with
370	the *BSD ports which may have essential libraries in unusual places.
371	But it can interfere with building an executable for the base system.
372	Use this option in that case.
373
374  --disable-scrollbar			(define USE_SCROLLBAR)
375	Turn off support for scrollbar on the right-margin of the screen.
376	If you configure with ncurses, this works with the mouse on xterm,
377	etc.
378
379  --disable-session-cache		(define USE_CACHE_JAR)
380	Turn off support for saving/restoring session information in files.
381	Configurable from lynx.cfg
382
383  --disable-sessions			(define USE_SESSIONS)
384	Turn off support for sessions, which allows the user to automatically
385	save and restore history information.
386
387  --disable-source-cache		(define USE_SOURCE_CACHE)
388	Turn off support for caching HTML pages locally,
389	in files or in memory.	Configurable from lynx.cfg
390
391  --disable-trace			(define NO_LYNX_TRACE)
392	Turn off code that lets you trace internal details of Lynx' operation.
393	We recommend that you leave this enabled, since we need this
394	information to diagnose problems with either Lynx or the sites to which
395	you connect.
396
397  --enable-ascii-ctypes			(define USE_ASCII_CTYPES)
398	Compiles-in alternative case-conversion functions which ensure that
399	configuration names, etc., are compared in POSIX locale.  This is
400	important for operating in some locale such as Turkish.
401
402  --enable-cgi-links			(define LYNXCGI_LINKS)
403	Allows lynx to access a cgi script directly without the need for
404	a http daemon.
405
406  --enable-change-exec			(define ENABLE_OPTS_CHANGE_EXEC)
407  	Allow users to change the execution status within the options screen.
408	See EXEC_LINKS and EXEC_SCRIPTS.
409
410  --enable-charset-choice		(define USE_CHARSET_CHOICE)
411	Add logic for ASSUMED_DOC_CHARSET_CHOICE and DISPLAY_CHARSET_CHOICE in
412	lynx.cfg, allowing user to configure a subset of the compiled-in
413	charsets for normal use.
414
415  --enable-cjk				(define CJK_EX)
416	Add experimental logic for supporting CJK documents.  (This is not
417	necessary for CJK support and may go away in a future release.)
418
419  --enable-debug			(The symbol DEBUG is always defined.)
420        Use this option to compile-in support for debugging.
421        Note that this flag is ignored if the CFLAGS environment
422        variable is set, in that case "-g" (or whatever) has to
423        be included in the CFLAGS value to get debugging.
424	Autoconf normally adds -g and -O options to CFLAGS if CFLAGS
425	was not set, and if the compiler supports those options.
426
427  --enable-default-colors		(define USE_DEFAULT_COLORS)
428  	Enable use of default-color background (ncurses/slang).  Either
429	configuration supports the use of 'default' for colors even without
430	this option.  That is, 'default' is interpreted as white (foreground)
431	or black (background) according to the context.  When the default
432	colors configuration is built, the actual values for foreground and
433	background colors are determined by the terminal.
434
435  --enable-exec-links			(define EXEC_LINKS)
436	Allows lynx to execute programs by accessing a link.
437
438  --enable-exec-scripts 		(define EXEC_SCRIPTS)
439	Allows lynx to execute programs inferred from a link.
440
441  --enable-externs			(define USE_EXTERNALS)
442	Use this option to enable external application support. (See lynx.cfg.)
443
444  --enable-find-leaks			(define LY_FIND_LEAKS)
445	Use this option to compile-in logic for testing memory leaks.
446
447  --enable-font-switch			(define EXP_CHARTRANS_AUTOSWITCH)
448	Allow Lynx to automatically change the Linux console state (switch
449	fonts) according to the current Display Character Set.  (Linux console
450	only.  *Use with discretion.*  See docs/README.chartrans.)
451
452  --enable-gnutls-compat		(define USE_GNUTLS_FUNCS)
453	When --with-gnutls is used, tell whether to use GNUTLS' OpenSSL
454	compatibility library or use GNUTLS' low-level API directly.
455
456  --enable-gzip-help
457	Install the lynx help files in gzip'd format [*.gz] to save space.
458
459  --enable-htmlized-cfg
460	generate an HTMLized copy of lynx.cfg which will be installed with
461	the other help files.
462
463  --enable-internal-links		(define TRACK_INTERNAL_LINKS)
464        With `internal links' (links within a document to a location within
465        the same document) enabled, Lynx will distinguish between, for example,
466        `<A HREF="foo#frag">' and `<A HREF="#frag">' within a document whose
467        URL is `foo'.  It may handle such links differently, although practical
468        differences would appear only if the document containing them resulted
469        from a POST request or had a no-cache flag set.  This feature attempts
470        to interpret URL-references as suggested by RFC 2396, and to prevent
471        mistaken resubmissions of form content with the POST method.  An
472        alternate opinion asserts that the feature could actually result in
473        inappropriate resubmission of form content.
474
475  --enable-ipv6         		(define ENABLE_IPV6)
476	use IPV6 (with IPV4) logic.
477
478  --enable-japanese-utf8		(define EXP_JAPANESEUTF8_SUPPORT)
479	use experimental Japanese UTF-8 logic.
480
481  --enable-kbd-layout			(define EXP_KEYBOARD_LAYOUT)
482	Disabled by default, this option allows you to use translation
483	tables on the input keystrokes.  Current tables include
484		ROT13'd keyboard layout
485		JCUKEN Cyrillic, for AT 101-key kbd
486		YAWERTY Cyrillic, for DEC LK201 kbd
487
488  --enable-local-docs
489	On install, modify link from help-page to point to the local
490	doc-directory, e.g., with README files.  Normally this points
491	to the current release directory.
492
493  --enable-locale-charset		(define USE_LOCALE_CHARSET)
494  	Use nl_langinfo(CODESET) to determine initial value for display
495	charset, overrides character_set value in .lynxrc file.
496
497  --enable-nested-tables		(define EXP_NESTED_TABLES)
498	Extends TRST to format nested tables, as well as be smarter about
499	<BR> and <P> tags in table cells.
500
501  --enable-nls				(several definitions)
502	use Native Language Support (i.e., gettext).
503
504  --enable-nsl-fork			(define NSL_FORK)
505	Disabled by default, this allows interruption of NSL requests,
506	so that `z' will stop the `look-up' phase of a connection.
507
508  --enable-syslog			(define SYSLOG_REQUESTED_URLS)
509	Use this option to log NSL requests via syslog().
510
511  --enable-underlines			(define UNDERLINE_LINKS)
512	Use this option to underline links rather than using boldface.
513
514  --enable-vertrace			(define LY_TRACELINE)
515	Turn on code that prefixes trace output lines with source filename
516	and line number.
517
518  --enable-warnings
519	Use this option to turn on GCC compiler warnings.
520
521  --enable-wais
522	Use this option to turn on configure check for freeWAIS library.
523
524  --enable-widec
525	Use this option to allow the configure script to look for wide-curses
526	features.  If you do not specify the option, the configure script
527	will look for these features if --with-screen=ncursesw is given.
528	For this release of Lynx, we recommend the ncursew library built from
529	ncurses 5.5.
530
531  --sysconfdir				(affect LYNX_CFG_FILE)
532	Defines the location where you want the lynx.cfg file installed.
533	The configure script defines the symbol LYNX_CFG_FILE to correspond
534	with the $sysconfdir environment variable.  (For platforms which do not
535	support a configure script, such as MS-DOS, Win32 and VMS, you must
536	edit userdefs.h if you wish to specify the location of lynx.cfg).
537
538  --with-Xaw3d
539	This option allows you to specify the X libraries used if you
540	are configuring lynx to use PDCurses on a Unix platform.
541
542  --with-XawPlus
543	This option allows you to specify the X libraries used if you
544	are configuring lynx to use PDCurses on a Unix platform.
545
546  --with-build-cc=XXX
547	If cross-compiling, specify a host C compiler, which is needed to
548	compile a utility which generates tables for lynx.
549	If you do not give this option, the configure script checks if the
550	$BUILD_CC variable is set, and otherwise defaults to gcc or cc.
551
552  --with-build-cpp=XXX
553	This is unused by lynx.
554
555  --with-build-cflags=XXX
556	If cross-compiling, specify the host C compiler-flags.  You might need
557	to do this if the target compiler has unusual flags which confuse the
558	host compiler.
559
560  --with-build-cppflags=XXX
561	If cross-compiling, specify the host C preprocessor-flags.  You might
562	need to do this if the target compiler has unusual flags which confuse
563	the host compiler.
564
565  --with-build-ldflags=XXX
566	If cross-compiling, specify the host linker-flags.  You might need to
567	do this if the target linker has unusual flags which confuse the host
568	compiler.
569
570  --with-build-libs=XXX
571	If cross-compiling, the host libraries.  You might need to do this if
572	the target environment requires unusual libraries.
573
574  --with-bzlib[=XXX]			(define USE_BZLIB)
575	Use libbz2 for decompression of some bzip2 files.
576
577	The optional value XXX specifies the directory in which the library
578	can be found, and may be either the path of the "lib" directory,
579	or one level above.  In either case, the corresponding header files
580	are assumed to be in the parallel "include" directory.
581
582  --with-charsets=list			(define ALL_CHARSETS)
583 	Limit the number of charsets that are compiled-in to the specified
584	list of comma-separated MIME names.
585
586  --with-cfg-file			(define LYNX_CFG_FILE)
587	Specify the default configuration file's name.  Use --without-cfg-file
588	to force the user to specify the configuration file on the command
589	line.
590
591  --with-curses-dir
592	Specify directory under which curses/ncurses is installed.  This
593	assumes a standard install, e.g., with an include and lib subdirectory.
594
595  --with-dbmalloc
596	use Conor Cahill's dbmalloc library
597
598  --with-destdir=XXX
599	set DESTDIR variable in makefiles.  This is prefixed to all directories
600	in the actual install, but is not really part of the compiled-in or
601	configured directory names.  It is convenient for packaging the
602	installed files.  If you do not provide the option, the configure
603	script uses your $DESTDIR environment variable.
604
605  --with-dmalloc
606	use Gray Watson's dmalloc library
607
608  --with-gnutls[=XXX]			(define USE_SSL, USE_GNUTLS_INCL)
609	Use this option to configure with the GNU TLS library.
610	See docs/README.ssl for additional information.
611
612	The optional value XXX specifies the directory in which the library
613	can be found, and may be either the path of the "lib" directory,
614	or one level above.  In either case, the corresponding header files
615	are assumed to be in the parallel "include" directory.  The default
616	is /usr/local/gnutls.
617
618	See the "--enable-gnutls-compat" option.
619
620  --with-included-gettext
621	not supported in this package.  The configure script uses macros which
622	are bundled together with more useful features.
623
624	See the "--enable-nls" option.
625
626  --with-libiconv-prefix=DIR
627	search for libiconv in DIR/include and DIR/lib
628
629  --with-lss-file{=path}		(define LYNX_LSS_FILE)
630	Specify the default style-sheet file's name.  Use --without-lss-file
631	to make the default behavior match the non-color-style (if no --lss
632	option is given, and no COLOR_STYLE setting is in lynx.cfg).
633
634  --with-mime-libdir=list		(define MIME_LIBDIR)
635	Use this option to specify the system directory containing the
636	mime.types and mailcap files.
637
638  --with-neXtaw
639	This option allows you to specify the X libraries used if you
640	are configuring lynx to use PDCurses on a Unix platform.
641
642  --with-nls-datadir=DIR
643	Use this option to override the configure script's NLS data directory,
644	under which the locale (i.e., language) files are installed.  The
645	default value is derived at configure time, and depends on whether GNU
646	or native gettext is used.
647
648  --with-nss-compat[=XXX]		(define USE_NSS_COMPAT_INCL)
649	Use this option to configure with the NSS library's OpenSSL-compatible
650	interface.
651	See docs/README.ssl for additional information.
652
653	The optional value XXX specifies the directory in which the library
654	can be found, and may be either the path of the "lib" directory,
655	or one level above.  In either case, the corresponding header files
656	are assumed to be in the parallel "include" directory.
657
658  --with-pkg-config[=XXX]
659	Use pkg-config, if available, to tell how to build with certain
660	libraries, e.g., openssl and gnutls.  If pkg-config is not used,
661	or if those libraries are not known to pkg-config, then the configure
662	script will search for the libraries as described in the --with-ssl
663	and --with-gnutls options.
664
665	The optional value XXX specifies the pathname for pkg-config, e.g.,
666	"/usr/local/bin/pkg-config".
667
668	Note: The pkg-config program is used only if no explicit directory
669	parameter is provided for the --with-ssl or --with-gnutls options.
670
671  --with-screen=XXX
672	Use this option to select the screen type.  The option value, XXX
673	must be one of curses (the default), ncurses, ncursesw, pdcurses or
674	slang.  Specifying a screen type causes the configure script to
675	look in standard locations for the associated header and library
676	files, unless you have preset the $CFLAGS and $LIBS variables.
677
678	--with-screen=ncursesw		(define NCURSES, WIDEC_CURSES)
679	--with-screen=ncurses		(define NCURSES)
680	--with-screen=pdcurses		(define PDCURSES)
681	--with-screen=slang		(define USE_SLANG)
682
683	Note that some systems may have a default curses library which
684	does not support color, while on others, ncurses is installed as
685	the curses library.  The variant ncursesw is the wide-character
686	version of ncurses.  See also the --enable-widec option.
687
688	The pdcurses selection supported by the configure script is a UNIX-only
689	library which uses X11.  If you are configuring with DJGPP, the likely
690	choice is "curses", since that is how PDCurses is normally installed.
691
692  --with-socks[=XXX]			(define SOCKS)
693	Use this option to configure with the socks library.
694
695	The optional value XXX specifies the directory in which the library
696	can be found, and may be either the path of the "lib" directory,
697	or one level above.  In either case, the corresponding header files
698	are assumed to be in the parallel "include" directory.
699
700  --with-socks5[=XXX]			(define USE_SOCKS5, SOCKS)
701	Use this option to configure with the socks5 library.
702
703	The optional value XXX specifies the directory in which the library
704	can be found, and may be either the path of the "lib" directory,
705	or one level above.  In either case, the corresponding header files
706	are assumed to be in the parallel "include" directory.
707
708	If you make a SOCKSified lynx, you may have trouble accessing FTP
709	servers.  Also, instead of SOCKSifying lynx for use behind a firewall,
710	you are better off if you make it normally, and set it up to use a
711	proxy server.  You can SOCKSify the proxy server, and it will handle
712	all clients, not just Lynx.  If your SOCKS server was compiled to use
713	the short version of Rbind, also include -DSHORTENED_RBIND in your
714	SITE_LYDEFS and SITE_DEFS.  If you do SOCKSify lynx, you can turn off
715	SOCKS proxy usage via a -nosocks command line switch.
716
717  --with-ssl[=XXX]			(define USE_SSL)
718	Use this option to configure with the OpenSSL library, or SSLeay.
719	See docs/README.ssl for additional information.
720
721	The optional value XXX specifies the directory in which the library
722	can be found, and may be either the path of the "lib" directory,
723	or one level above.  In either case, the corresponding header files
724	are assumed to be in the parallel "include" directory.
725
726  --with-system-type=XXX
727	For testing, override the derived host system-type which is used to
728	decide things such as special compiler options.  This is normally
729	chosen automatically based on the type of system which you are
730	building on.  We use it for testing the configure script.
731
732  --with-textdomain[=XXX]		(define NLS_TEXTDOMAIN)
733	Set the NLS textdomain to the given value.  This is normally "lynx".
734
735  --with-zlib[=XXX]			(define USE_ZLIB)
736	Use zlib for decompression of some gzip files.
737
738	The optional value XXX specifies the directory in which the library
739	can be found, and may be either the path of the "lib" directory,
740	or one level above.  In either case, the corresponding header files
741	are assumed to be in the parallel "include" directory.
742
7431d. Environment variables
744    The configure script looks for programs and libraries in known/standard
745    locations.  You can override the behavior of the script by presetting
746    environment variables.  If they are set, the script will try to use these
747    values rather than computing new ones.  Useful variables include:
748
749	CC - the C compiler.  If you do not override this, configure
750		will try to use gcc. For instance, setting CC=cc and
751		exporting this value will cause configure to use cc instead.
752
753	CFLAGS - the C compiler options.  These also include C
754		preprocessor options (such as -I), since the $CFLAGS and
755		$CPPFLAGS variables are maintained separately.
756
757	CPPFLAGS - the C preprocessor options.  For some configuration
758		tests, you may need to set both $CFLAGS and $CPPFLAGS if
759		you are compiling against header files in nonstandard
760		locations.
761
762	LDFLAGS - linker/loader options.
763
764	LIBS - the libraries to be linked, with -L and -l options.  If
765		you are linking against libraries in nonstandard locations
766		unrelated to the install prefix (that you can specify in
767		the configure script) you may have to specify these via
768		the $LIBS variable.
769
770    Lynx has compiled-in the pathnames of various programs which it executes.
771    Normally the full pathnames are given, rather than the program name
772    alone.  These may be preset in the environment by the capitalized version,
773    e.g., INSTALL for "install".  The corresponding internal definitions
774    are suffixed "_PATH", e.g., "INSTALL_PATH".
775
776
777-- 1997/7/27 - T. Dickey <dickey@clark.net>
778
7791e. Examples
780    If you are compiling Lynx for your personal use and are restricted to your
781    home directory, a simple method for building would be to choose some
782    directory, say ".lynx", and then type:
783
784	./configure --prefix=~/.lynx --exec-prefix=~/.lynx
785    and
786	make install
787
788    Now you only need to add "~/.lynx/bin" to your PATH and edit "~/.lynx/lib/
789    lynx.cfg" as described above.
790
791    I personally use the following csh shell script to set environment
792    variables and configure options rather than type them each time.
793	#!/bin/csh -f
794	setenv CPPFLAGS "-I$HOME/slang -I$HOME/.usr/include"
795	setenv LIBS "-L$HOME/.slang/lib -L$HOME/.usr/lib"
796	./configure --exec-prefix=$HOME --bindir=$HOME/.lynx \
797		--mandir=$HOME/.usr/man --sysconfdir=$HOME/.usr/lib \
798		--with-screen=slang --with-zlib
799
800    CPPFLAGS in this example defines the full path to the slang and zlib
801    header files, which are not kept in standard directories.  Likewise, LIBS
802    defines the nonstandard locations of libslang.a and libz.a.  Setting the
803    option --bindir tells the configure script where I want to install the
804    lynx binary; setting --mandir tells it where to put the lynx.1 man page,
805    and setting --sysconfdir tells it (while at the same time defining
806    LYNX_CFG_FILE) where to put the configuration file "lynx.cfg", when I type
807    "make install".  The --with-screen=slang and --with-zlib options are
808    explained above.
809
8102. Wais support (optional)
811    To add direct WAIS support, get the freeWAIS distribution from
812    "ftp://ftp.cnidr.org/pub/NIDR.tools/freewais", and compile it.  The
813    compile process will create the libraries you will need, wais.a and
814    client.a.  Edit the Makefile in the top level directory and add the
815    library locations under the DIRECT WAIS ACCESS heading.  Edit the Makefile
816    for the WWW Library in "WWW/Library/Implementation/makefile" to point to
817    the include directory for the freewais distribution.  Precompiled
818    libraries are available for many platforms if you don't wish to compile
819    one yourself.
820
821-------------------------------------------------------------------------------
822
823III. Compile instructions -- VMS
824
825Step 1.  Downloading binary files.
826    Lynx must handle all IO as streams, and on VMS, output files are always
827    created with Stream_LF format via the C RTL's fopen().  The file headers
828    indicate Implied Carriage Control, even when the transfer was in binary
829    mode, which can confuse downloading software and cause corruption of
830    the file contents.  To deal with this, you should define the symbol
831    USE_FIXED_RECORDS as TRUE in userdefs.h and/or lynx.cfg.  This will
832    instruct Lynx to correct the header information to indicate FIXED 512
833    records, with No Implied Carriage Control.  If Lynx fails to do the
834    conversion (because the file wasn't mapped to a binary MIME type) you can
835    execute FIXED512.COM externally to correct the header information.  The
836    command file uses Joe Meadow's FILE utility, or the SET FILE/ATTRIBUTES
837    command on current versions of VMS, to modify the headers.  See the
838    comments in FIXED512.COM, userdefs.h and lynx.cfg for more information.
839
840Step 2.  Passive FTP
841    If your system requires the PASV FTP code instead of the standard PORT FTP
842    code (e.g., to deal with a firewall) then set the FTP_PASSIVE option in
843    lynx.cfg
844
845Step 3a.
846    Lynx uses the VMS port of gzip for uncompressing streams which have
847    Content-Encoding headers indicated compression with gzip or the
848    Unix compress.  If you do not have gzip installed on your system
849    you can get it from "ftp://ftp.wku.edu/" in the fileserv directory.
850    The command Lynx uses to uncompress on VMS is "gzip -d".
851
852    If you are using the SOCKETSHR library, read SOCKETSHR.announce and
853    make sure you have defined SOCKETSHR and SOCKETSHR_LIBRARY as explained
854    therein.
855
856    A "build.com" and "build-slang.com" script for building Lynx with curses
857    or slang is in the top level directory.  All you have to do is type
858    "@build" or "@build-slang" and answer its prompt for your system's TCP-IP
859    software.  Current choices are:
860	   MULTINET (default)
861	   UCX
862	   WIN_TCP
863	   CMU_TCP
864	   SOCKETSHR_TCP
865	   TCPWARE
866    It will autosense whether you have VAXC, DECC or GNUC on VAX or AXP and
867    build appropriately.  If a WWWLib already exists for that TCP-IP software,
868    it will prompt you for whether you want to rebuild it.  If you want to
869    build a WWWLib separately, you can type "@libmake.com" with your default
870    directory set to [.WWW.Library.vms] instead doing it via "build.com" in
871    the top directory.  You may need to modify "build-slang.com", as described
872    in its header, so that it can find slang.olb on your system.  If you have
873    both DECC and VAXC, it will use DECC to benefit from the newer and more
874    efficient memory management functions.
875
876Step 3b.  (optional compilation method)
877    If you have and want to use MMS, read the header of descrip.mms in the
878    top directory and be sure you include the appropriate macro definitions
879    when you invoke it:
880
881	$ MMS /Macro = (MULTINET=1)		for VAXC - MultiNet
882	$ MMS /Macro = (WIN_TCP=1)		for VAXC - Wollongong TCP/IP
883	$ MMS /Macro = (UCX=1)			for VAXC - UCX
884	$ MMS /Macro = (CMU_TCP=1)		for VAXC - OpenCMU TCP/IP
885	$ MMS /Macro = (SOCKETSHR_TCP=1)	for VAXC - SOCKETSHR/NETLIB
886	$ MMS /Macro = (TCPWARE=1)		for VAXC - TCPWare TCP/IP
887
888	$ MMS /Macro = (MULTINET=1, DEC_C=1)	for DECC - MultiNet
889	$ MMS /Macro = (WIN_TCP=1, DEC_C=1)	for DECC - Wollongong TCP/IP
890	$ MMS /Macro = (UCX=1, DEC_C=1)		for DECC - UCX
891	$ MMS /Macro = (CMU_TCP=1, DEC_C=1)	for DECC - OpenCMU TCP/IP
892	$ MMS /Macro = (SOCKETSHR_TCP=1,DEC_C=1) for DECC - SOCKETSHR/NETLIB
893	$ MMS /Macro = (TCPWARE=1, DEC_C=1)	for DECC - TCPWare TCP/IP
894
895	$ MMS /Macro = (MULTINET=1, GNU_C=1)	for GNUC - MultiNet
896	$ MMS /Macro = (WIN_TCP=1, GNU_C=1)	for GNUC - Wollongong TCP/IP
897	$ MMS /Macro = (UCX=1, GNU_C=1)		for GNUC - UCX
898	$ MMS /Macro = (CMU_TCP=1, GNU_C=1)	for GNUC - OpenCMU TCP/IP
899	$ MMS /Macro = (SOCKETSHR_TCP=1,GNU_C=1) for GNUC - SOCKETSHR/NETLIB
900	$ MMS /Macro = (TCPWARE=1, GNU_C=1)	for GNUC - TCPWare TCP/IP
901
902    If you just type "MMS" it will default to the MULTINET and VAXC
903    configuration.  MMS will build the WWW library and Lynx sources, and
904    link the executable.  However, not all of the header dependencies are
905    specified.  If you are not a developer, and need a clean build, you
906    should use build.com instead of the MMS utility.
907
908    If you want SOCKS support on VMS, you must add SOCKS as a compilation
909    definition, and the SOCKS library to the link command.  However, instead
910    of SOCKSifying Lynx for use behind a firewall, you are better off if you
911    build Lynx normally, and set up Lynx to use a proxy server (see below).
912    You instead can SOCKSify the proxy server, and it will handle all clients,
913    not just Lynx.
914
915-------------------------------------------------------------------------------
916
917IV. Compile instructions -- Win32 (Windows95/98/NT)
918
919Borland C:
920---------
921
922Simplified:
923----------
924
925Sources:
926    Download the current sources (choose a zip-file) from http://lynx.isc.org
927    and unzip them into a directory where you will build Lynx.
928
929Compiler:
930    Download the Borland C/C++ 5.51 compiler from
931	http://forms.embarcadero.com/forms/BCC32CompilerDownload
932
933    This is a file named "freecompilertools.exe".
934
935    Run that to install the compiler, e.g., in
936	c:\app\bcc55
937
938    Do not install into a directory with spaces in its name, such as
939	c:\program files
940
941Libraries:
942    Download these "setup" files from http://gnuwin32.sourceforge.net
943	libiconv-1.9.2-1.exe (libiconv)
944	libintl-0.14.4.exe (libintl)
945	openssl-0.9.8h-1-setup.exe (openssl)
946	pdcurses-2.6.exe (pdcurses)
947	zlib-1.2.3.exe (zlib)
948
949    Install all of the packages in the same directory, "c:\app\GnuWin32".
950
951    A fix is needed in GnuWin32 include/zconf.h: change line reading
952    	#if 1	/* HAVE_UNISTD_H -- this line is updated by ./configure */
953    to
954    	#ifdef HAVE_UNISTD_H
955
956    Prepare import-libraries using Borland's implib program.  The ".lib"
957    files that it uses are a different format than the import libraries
958    distributed with GnuWin2.  From Lynx' source directory run
959        bcblibs
960
961Environment:
962    At this point, the bin-directory for the compiler and for the GnuWin32
963    libraries should be in your path.
964
965Building:
966    From Lynx' source directory
967	cd src\chrtrans
968	makew32 clean
969	makew32
970	cd ..\..
971	makew32 clean
972	makew32
973
974-------------------------------------------------------------------------------
975
976Detailed:
977--------
978    The original Win32 port was built with Borland C++ 4.52, but later
979    versions reportedly can be used.  Before compiling the Lynx sources, you
980    need a curses library, and it is recommended that you have the zlib
981    library.  Get pdcurses2.3 from "http://pdcurses.sourceforge.net/".  I
982    have modified it so that mouse support is no longer broken for Lynx (see
983    "http://www.fdisk.com/doslynx/").  You will want to get zlib from
984    "http://www.zlib.net/ ".  Compile these libraries, and
985    put them in a convenient place (pdcurses inside the Lynx directory).
986
987    Unpack the latest Lynx source distribution, and make an obj directory
988    under the source root to contain the compile output.  Copy in your
989    IDE file.  A sample IDE file and helper libraries are available at
990    "http://www.fdisk.com/doslynx/wlynx/source/".
991
992    First build the .h files in src\chrtrans using "makew32.bat".  Double
993    check for new .tbl files; hand edit in any new ones, and then do "makew32".
994    Jump into Borland C++, load the project (IDE file) and compile Lynx.
995    Alternately, after compiling the chartrans tables, you can come back to
996    the top directory and compile manually, i.e., do "make -f makefile.bcb".
997
998    I also have a binary available at "http://www.fdisk.com/doslynx/".  This
999    binary was compiled with pdcurses 2.3, hacked so win32 mouse support works,
1000    and with zlib, so Lynx can do gzip routines internally.  More hints and
1001    information can be found in "http://www.fdisk.com/doslynx/lynxport.htm".
1002
1003-- 1997/10/12 - W. Buttles <lynx-port@fdisk.com>
1004-- 2010/11/27 - URLs updated by Doug Kaufman <dkaufman@rahul.net>
1005
1006-------------------------------------------------------------------------------
1007
1008Cygwin:
1009    It is possible to compile under the cygwin system, which will allow you to
1010    use the configure script described above for Unix.  Type, for example,
1011    "./configure --with-screen=ncurses --with-libz" in a Dos window running the
1012    cygwin bash$ shell.  You also have the choice of using either pdcurses or
1013    slang.  You will need a launch program such as sh.exe to call helper
1014    applications.  Paths may need to be in cygwin style, rather than Windows
1015    style (e.g., TMPDIR=/cygdrive/d/cygwin/tmp, rather than
1016    TMPDIR=d:\cygwin\tmp).
1017
1018Visual C++:
1019    You must have compiled zlib and PDCurses with the -MT (threaded code)
1020    option.  This is not the default with zlib (see Makefile.msc).
1021
1022    Copy into lib the following
1023	zconf.h
1024	zlib.h
1025	zlib.lib
1026
1027    from the zlib build-tree, and
1028	curses.h
1029	pdcurses.lib
1030
1031    from the PDCurses build-tree.
1032
1033    Then
1034	make-msc
1035
1036    to build lynx.
1037
1038-------------------------------------------------------------------------------
1039
1040V. Compile instructions -- 386 DOS
1041
1042    Compiling for DOS with DJGPP has traditionally been a multistep
1043    procedure. Now, if you have a full installation of DJGPP you can
1044    also install using the configure script, just as in the UNIX
1045    section. This needs to be done under a BASH shell. Use a shell
1046    script to run configure as in the example at the end of this
1047    section. Otherwise you can follow the below instructions. The
1048    multistep procedure for DOS may not be supported in the future
1049    and use of the configure script is recommended. The information
1050    about required libraries and unpacking applies to both methods of
1051    compiling.
1052
1053    First install the C compiler and its libraries (see readme.1st from
1054    DJGPP distribution).
1055
1056    Originally, lynx makefiles come with the initial -O2 optimization
1057    level. If you experience compilation process too slow due to paging
1058    to the disk (DPMI server provide virtual memory, when in lack of
1059    RAM), you may change optimization to -O1 or turn the optimization
1060    off entirely.
1061
1062    If using optimization level -O2 or -O3 with older versions of DJGPP
1063    and GCC, you may need to "stubedit" your "cc1.exe" file to enlarge
1064    compiler stack size. For instance, if using DJGPP 2.02 and GCC 2.8.1,
1065    to compile with -O3 optimization, the stub needs to be edited to give
1066    a larger stack. To do this go into djgpp\lib\gcc-lib\djgpp\2.81 and
1067    either type the command:
1068   	 "stubedit cc1.exe bufsize=63k minstack=2M",
1069    or edit interactively with: "stubedit cc1.exe". Current versions of
1070    DJGPP and GCC generally work with the standard stack.
1071
1072    Unpack the source code using a DOS program like UNZIP386.  If you are
1073    using PKUNZIP to unpack the .zip archive, you must use the -d command
1074    line switch to restore the directory structure contained in the archive,
1075    i.e., do "pkunzip -d lynx-cur.zip".  No switch is required if you use
1076    unzip386 or unzip.  If you are trying to compile the 386DOS port under a
1077    WinNT DOS shell, be sure to unpack the source with a DOS program so
1078    that all directories will be adjusted to the DOS 8.3 file format necessary
1079    for compiling with DJGPP.  Do NOT use Winzip, because that will create
1080    long filenames that will not be recognized by DJGPP tools.
1081
1082    If you wish to compile with "USE_ZLIB" (recommended), you must have the
1083    zlib library.  Get the source from
1084	    http://www.zlib.net
1085    and compile it.  Put libz.a in the lib subdirectory of DJGPP, and put
1086    zlib.h and zconf.h in the include subdirectory.
1087
1088    In addition to the files in the Lynx distribution, you will need a curses
1089    package and a TCP package.  You can use PDCurses (available at
1090    "http://pdcurses.sourceforge.net/") and the DJGPP port of WATTCP.  The
1091    updated version of WATTCP is known as WATT-32, and is available at
1092    "http://home.broadpark.no/~gvanem/".  You can also use slang (available at
1093    "http://www.jedsoft.org/slang/") as your screen library.  You must
1094    compile these before you go any further.  If you wish to use PDCurses 2.6,
1095    you need to first apply the following patch:
1096
1097--- dos/gccdos.mak.ori	2002-01-11 20:11:18.000000000 -0800
1098+++ dos/gccdos.mak	2003-12-13 21:29:28.000000000 -0800
1099@@ -40,11 +40,11 @@
1100 	CFLAGS  = -c -g -Wall -DPDCDEBUG
1101 	LDFLAGS = -g
1102 else
1103-	CFLAGS  = -c -O -Wall
1104+	CFLAGS  = -c -O2 -Wall
1105 	LDFLAGS =
1106 endif
1107
1108-CPPFLAGS	= -I$(PDCURSES_HOME) -I$(CCINCDIR) -D_NAIVE_DOS_REGS
1109+CPPFLAGS	= -I$(PDCURSES_HOME) -I$(CCINCDIR) -D_NAIVE_DOS_REGS -DHAVE_STRING_H
1110
1111 CCFLAGS		= $(CFLAGS) $(CPPFLAGS)
1112
1113@@ -64,10 +64,10 @@
1114 all:	$(PDCLIBS) $(DEMOS)
1115
1116 clean:
1117 	-del *.o
1118-	-del curses.lib
1119-	-del panel.lib
1120+	-del pdcurses.a
1121+	-del panel.a
1122
1123 demos:	$(DEMOS)
1124
1125@@ -287,33 +287,27 @@
1126 #------------------------------------------------------------------------
1127
1128 firework.exe:	firework.o $(LIBCURSES)
1129-	$(LINK) $(LDFLAGS) -o firework firework.o $(LIBCURSES)
1130-	$(COFF2EXE) firework
1131+	$(LINK) $(LDFLAGS) -o firework.exe firework.o $(LIBCURSES)
1132 	strip $@
1133
1134 newdemo.exe:	newdemo.o $(LIBCURSES)
1135-	$(LINK) $(LDFLAGS) -o newdemo newdemo.o $(LIBCURSES)
1136-	$(COFF2EXE) newdemo
1137+	$(LINK) $(LDFLAGS) -o newdemo.exe newdemo.o $(LIBCURSES)
1138 	strip $@
1139
1140 ptest.exe:	ptest.o $(LIBCURSES) $(LIBPANEL)
1141-	$(LINK) $(LDFLAGS) -o ptest ptest.o $(LIBCURSES) $(LIBPANEL)
1142-	$(COFF2EXE) ptest
1143+	$(LINK) $(LDFLAGS) -o ptest.exe ptest.o $(LIBCURSES) $(LIBPANEL)
1144 	strip $@
1145
1146 testcurs.exe:	testcurs.o $(LIBCURSES)
1147-	$(LINK) $(LDFLAGS) -o testcurs testcurs.o $(LIBCURSES)
1148-	$(COFF2EXE) testcurs
1149+	$(LINK) $(LDFLAGS) -o testcurs.exe testcurs.o $(LIBCURSES)
1150 	strip $@
1151
1152 tuidemo.exe:	tuidemo.o tui.o $(LIBCURSES)
1153-	$(LINK) $(LDFLAGS) -o tuidemo tuidemo.o tui.o $(LIBCURSES)
1154-	$(COFF2EXE) tuidemo
1155+	$(LINK) $(LDFLAGS) -o tuidemo.exe tuidemo.o tui.o $(LIBCURSES)
1156 	strip $@
1157
1158 xmas.exe:	xmas.o $(LIBCURSES)
1159-	$(LINK) $(LDFLAGS) -o xmas xmas.o $(LIBCURSES)
1160-	$(COFF2EXE) xmas
1161+	$(LINK) $(LDFLAGS) -o xmas.exe xmas.o $(LIBCURSES)
1162 	strip $@
1163
1164
1165--- dos/pdckbd.c.ori	2002-09-01 00:13:30.000000000 -0800
1166+++ dos/pdckbd.c	2004-01-19 20:30:02.000000000 -0800
1167@@ -362,7 +362,7 @@
1168 		return ((int) (0xb8 << 8));
1169 	if (ascii == 0xe0 && scan == 0x53 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Del */
1170 		return ((int) (0xb9 << 8));
1171-	if (ascii == 0x00 || ascii == 0xe0)
1172+	if (ascii == 0x00 || (ascii == 0xe0 && scan != 0x00))
1173 		return ((int) (scan << 8));
1174 	return ((int) (ascii));
1175 }
1176@@ -522,7 +522,7 @@
1177 		_watch_breaks();
1178 #else
1179 # ifdef GO32
1180-	(void*)signal(SIGINT,(setting ? SIG_DFL : SIG_IGN));
1181+/*	(void*)signal(SIGINT,(setting ? SIG_DFL : SIG_IGN)); */
1182 /*	__djgpp_set_ctrl_c(setting);*/
1183 	setcbrk(setting);
1184 # else
1185--- pdcurses/kernel.c.ori	2002-11-27 03:24:32.000000000 -0800
1186+++ pdcurses/kernel.c	2003-12-13 21:22:38.000000000 -0800
1187@@ -27,6 +27,10 @@
1188 #include <memory.h>
1189 #endif
1190
1191+#ifdef HAVE_STRING_H
1192+#include <string.h>
1193+#endif
1194+
1195 #ifdef UNIX
1196 #include <defs.h>
1197 #include <term.h>
1198--- pdcurses/pdcutil.c.ori	2001-01-10 00:27:22.000000000 -0800
1199+++ pdcurses/pdcutil.c	2003-12-13 21:24:58.000000000 -0800
1200@@ -49,7 +49,7 @@
1201 #  include <limits.h>
1202 #endif
1203
1204-#ifdef STDC_HEADERS
1205+#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
1206 #  include <string.h>
1207 #endif
1208
1209--- pdcurses/pdcwin.c.ori	2002-05-25 17:13:32.000000000 -0800
1210+++ pdcurses/pdcwin.c	2003-12-13 21:26:02.000000000 -0800
1211@@ -27,6 +27,10 @@
1212 # include <memory.h>
1213 #endif
1214
1215+#ifdef HAVE_STRING_H
1216+#include <string.h>
1217+#endif
1218+
1219 #ifndef HAVE_MEMMOVE
1220 # define memmove PDC_memmove
1221 #endif
1222
1223    If you wish to compile with SSL enabled, you need to get and compile
1224    OpenSSL. The DJGPP port has been successfully compiled with the
1225    development version of OpenSSL. DJGPP can compile OpenSSL from the
1226    standard source distribution (http://www.openssl.org/). See the file
1227    "INSTALL.DJGPP" in the OpenSSL distribution.
1228
1229    If you have trouble applying the patches, try using the "patch" program,
1230    ("http://www.delorie.com/pub/djgpp/current/v2gnu/pat261b.zip").
1231    To read the Unix man style documentation, use, for example, "less"
1232    ("http://www.delorie.com/pub/djgpp/current/v2gnu/lss374b.zip").
1233    Compile or place your compiled PDCurses library in /djgpp/pdcur26, and
1234    compile or place your compiled WATT-32 library in /djgpp/watt32.  If
1235    using the SLANG library, put libslang.a in your DJGPP/lib directory and put
1236    slang.h in your DJGPP/include directory, or in the appropriate directories
1237    specified by LIBRARY_PATH and INCLUDE_PATH in your DJGPP.ENV file.
1238
1239    Move to the "lynx2-*/WWW/Library/djgpp" directory.  If compiling with
1240    PDCurses, do "make".  If using SLANG, do "make -f makefile.sla".  This
1241    should compile libwww.a.  Next move to the "lynx2-*/src/chrtrans" directory
1242    and do "make -f makefile.dos" to compile the character tables.  Then move
1243    to the "lynx2-*/src" directory.  There are three choices for compiling at
1244    this point.  You can do "make -f makefile.dos" to compile with PDCurses,
1245    "make -f makefile.wsl" to compile with SLANG, or "make -f makefile.dsl" to
1246    compile with SLANG and the DJGPP keyhandler.  At the time of this writing,
1247    it is not clear what the advantages and disadvantages of each version are.
1248    The PDCurses version has the most experience and allows remapping of ALT
1249    and Function keys.  The SLANG version seems to have better screen handling.
1250    It allows mapping of function keys, but not ALT keys.  The SLANG with DJGPP
1251    keyhandler allows mapping of ALT and Function keys, but has the risk of
1252    incompatibilities from mixing different programs.
1253
1254    If you wish to compile with support for internationalization of messages,
1255    you first need to install the DOS ports of the GNU gettext and libiconv
1256    packages, available from any DJGPP mirror site.  Then uncomment the lines
1257    for INTLFLAGS in src/makefile.dsl and in WWW/Library/djgpp/makefile.sla,
1258    and remove the "#" from the LIBS line in src/makefile.dsl.  Make similar
1259    changes if using one of the other DOS makefiles.  See the gettext
1260    documentation for information on creating and using message files for
1261    different languages.
1262
1263    If all goes well, you will have a lynx.exe file.  If you have trouble,
1264    check to be sure djgpp.env is the way it came in the original package.
1265
1266    To test Lynx_386 you must have a packet driver installed. The simplest
1267    method is to use a null packet driver that just allows Lynx to start
1268    up, but doesn't do anything else. One such executable driver has been
1269    posted, uuencoded, to the lynx-dev mailing list in January 1998,
1270    but is corrupted in the mailing list archive. You can get this at
1271    "http://www.ncf.ca/ncf/pda/computer/dos/net/nullpkt.zip". Start the
1272    dummy packet driver with "nullpkt 0x60", and take it out of memory with
1273    "nullpkt -u". You can also use slip8250.com. See the CRYNWR package
1274    "ftp://ftp.simtel.net/pub/simtelnet/msdos/pktdrvr/pktd11.zip". Usage
1275    is "slip8250 0x60", but you may have to invoke it as, for example,
1276    "slip8250 0x60 6 3 0x2F8" so that it uses COM2 and IRQ 3, in order to
1277    avoid an IRQ conflict with a mouse or some other device. Another packet
1278    driver is slipper.exe, which is available from many sites, including
1279    "http://www.cavazza.it/file/bbs/intsoft/slippr15.zip". To remove it from
1280    memory use termin.com (usage "termin 0x60"), available in the CRYNWR
1281    package. To connect over a dialup PPP connection you need dosppp or klos'
1282    pppshare. (Find at:
1283    "http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/net/dosppp/dosppp06.zip"
1284    "http://www.ncf.carleton.ca/ncf/pda/computer/dos/net/dosppp06.zip"
1285    "http://www.cavazza.it/file/bbs/intsoft/dosppp06.zip"
1286    "http://www.cavazza.it/file/bbs/intsoft/pppshare.exe")
1287
1288    File access looks like this:
1289
1290    file:///c:/
1291    file:///c:/dos
1292    file:///c:/dos/command.com
1293    file://localhost/c:/
1294    file://localhost/c:/dos
1295    file://localhost/c:/dos/command.com
1296
1297    See "http://www.fdisk.com/doslynx/lynxport.htm" for more hints and
1298    some precompiled libraries. One problem you can encounter is editing
1299    userdefs.h and lynx.cfg, which have unix-style end of lines. You would
1300    be well advised to use an editor that can handle end of lines terminated
1301    with a single LF character. You can also unpack the source code using
1302    unzip386 or unzip with the -a or -aa switch to convert unix LF to dos CRLF.
1303    That will make texts more readable under DOS. If you compile lynx
1304    regularly, you may automate the procedure by creating a batch file such
1305    as the following.
1306
1307	cd djgpp\watt32\src
1308	configur djgpp
1309	make -f djgpp.mak
1310	cd ..\..\..\www\library\djgpp
1311	make
1312	cd ..\..\..\src\chrtrans
1313	make -f makefile.dos
1314	cd ..\..\src
1315	make -f makefile.dos
1316	strip lynx.exe
1317	cd ..
1318
1319    This batch file expects the DJGPP port of WATT-32 to be installed in the
1320    lynx2-* directory.  Place a copy of this batch file, named "djgpp.bat",
1321    in the lynx2-* directory, move to that directory and type "djgpp".  A more
1322    complete batch file with error checking and annotation can be found at:
1323    "http://lists.nongnu.org/archive/html/lynx-dev/1997-11/msg00250.html".
1324
1325    If you use the configure method, remember that if you configure with
1326    the option "--enable-nls", you also need to set LIBS="-liconv". A
1327    sample shell script to run configure using PDCurses follows. If you
1328    compile to use SLANG, note that the DJGPP keyhandler will be used
1329    instead of the SLANG keyhandler unless you define "NO_DJ_KEYHANDLER".
1330
1331    #!/bin/sh
1332    CFLAGS="-O2 -I/djgpp/pdcur26 -I/djgpp/watt32/inc" \
1333    LIBS="-L/djgpp/pdcur26/lib -L/djgpp/watt32/lib -liconv" \
1334    ./configure --prefix=d:/djgpp/lynx-rel/lynx-cnf \
1335    --with-screen=curses \
1336    --disable-full-paths \
1337    --enable-addrlist-page \
1338    --enable-change-exec \
1339    --enable-cgi-links \
1340    --enable-charset-choice \
1341    --enable-color-style \
1342    --enable-exec-links \
1343    --enable-externs \
1344    --enable-file-upload \
1345    --enable-nested-tables \
1346    --enable-nls \
1347    --sysconfdir=d:/djgpp/lynx-rel/lynx-cnf \
1348    --with-bzlib \
1349    --with-zlib \
1350    --with-ssl
1351
1352-- 1997/9/29 - D. Kaufman <dkaufman@rahul.net>
1353-- 1997/10/3 - B. Schiavo <Wschiavo@concentric.net>
1354-- Last update - 2010/11/27
1355
1356-------------------------------------------------------------------------------
1357
1358VI. General installation instructions
1359
1360    Once you have compiled Lynx, test it out first on a local file.  Be sure
1361    Lynx can find lynx.cfg.  A _sample_ test command line would be:
1362    'lynx -cfg=/usr/local/lib/lynx.cfg .'.  Once you are satisfied that
1363    Lynx works, go ahead and install it.  For Unix, type "make install".
1364
1365    For VMS, you need to have the executable in a public place, make it
1366    accessible, define it as a foreign command, and copy lynx.cfg to
1367    "Lynx_Dir".  Look at lynx.com in the samples directory as a model for
1368    installing Lynx.  To include lynx.hlp in the system HELP library, use
1369    the command: "$ library/replace sys$help:helplib.hlb lynx.hlp".
1370
1371    Local copies of the Lynx online help should be made accessible in response
1372    to the Lynx 'h'elp command by defining HELPFILE in userdefs.h and/or
1373    lynx.cfg to an appropriate file://localhost/path URL.  On Unix, all you
1374    need to do is type "make install-help."  If you are installing manually,
1375    copy the files "COPYHEADER" and "COPYING" into the lynx_help directory
1376    BEFORE moving the lynx_help tree to its final location.  These files are
1377    referenced hypertextually from help documents.
1378
1379    If you have old, pre-existing bookmark files from earlier versions of
1380    Lynx, those files may have to be updated.  Conversion may just consist
1381    of adding one META line near the top, or may require creating new book-
1382    mark files and editing in bookmarks from outdated files.
1383
1384    IMPORTANT!  Be sure you have read the warnings about setting up an
1385    anonymous account with Lynx if you plan to give public access to Lynx.
1386
1387    After applying patches or editing files to correct for an unsuccessful
1388    build, be certain to do a "make clean" (or "make distclean" for those
1389    using auto-configure) before attempting to compile again.
1390
1391-------------------------------------------------------------------------------
1392
1393VII. Setting environment variables before running Lynx (optional)
1394
13951. All ports
1396
1397   The Lynx Users Guide describes all of the environment variables used by
1398   Lynx.  This should be checked later along with reading lynx.cfg after you
1399   have installed Lynx.
1400
14012. Win32 (95/98/NT) and 386 DOS
1402
1403    These ports cannot start before setting certain environment variables.
1404    Here are some environment variables that should be set, usually in a
1405    batch file that runs the lynx executable.  Make sure that you have enough
1406    room left in your environment.  You may need to change your "SHELL="
1407    setting in config.sys.  In addition, lynx looks for a "SHELL" environment
1408    variable when shelling to DOS.  If  you wish to preserve the environment
1409    space when shelling, put a line like this in your AUTOEXEC.BAT file also
1410    "SET SHELL=C:\COMMAND.COM /E:4096".  It should match CONFIG.SYS.
1411
1412    HOME         Where to keep the bookmark file and personal config files.
1413    TEMP or TMP  Bookmarks are kept here with no HOME.  Temp files here.
1414    USER         Set to your login name (optional)
1415    LYNX_CFG     Set to the full path and filename for lynx.cfg
1416    LYNX_LSS     Set to the full path and filename for lynx.lss
1417    LYNX_SAVE_SPACE  The (modifiable) location for downloaded file storage.
1418    SSL_CERT_FILE Set to the full path and filename for your file of trusted
1419                  certificates
1420
1421    386 version only:
1422    WATTCP.CFG   Set to the full path for the WATTCP.CFG directory
1423    RL_CLCOPY_CMD Command to copy a URL to a "clipboard" file
1424    RL_PASTE_CMD  Command to go to a URL in your "clipboard" file
1425
1426    Define these in your batch file for running Lynx.  For example, if your
1427    application line is "D:\win32\lynx.bat", lynx.bat for Win32 may look like:
1428	@ECHO OFF
1429	set home=d:\win32
1430	set temp=d:\tmp
1431	set lynx_cfg=d:\win32\lynx.cfg
1432	set lynx_save_space=d:\download
1433	d:\win32\lynx.exe %1 %2 %3 %4 %5
1434
1435    For lynx_386, a typical batch file might look like:
1436
1437	@echo off
1438	set HOME=f:/lynx2-8
1439	set USER=your_login_name
1440	set LYNX_CFG=%HOME%/lynx.cfg
1441	set WATTCP.CFG=%HOME%
1442	f:\lynx2-8\lynx %1 %2 %3 %4 %5 %6 %7 %8 %9
1443
1444    You need to make sure that the WATTCP.CFG file has the correct information
1445    for IP number, Gateway, Netmask, and Domain Name Server.  This can also be
1446    automated in the batch file.
1447
1448    Adapted from "readme.txt" by Wayne Buttles and "readme.dos" by Doug
1449    Kaufman.
1450
1451VIII. Acknowledgment
1452
1453   Thanks to the many volunteers who offered suggestions for making this
1454   installation manual as accurate and complete as possible.
1455
1456-- 1999/04/24 - H. Nelson <lynx-admin@irm.nara.kindai.ac.jp>
1457-- vile:txtmode
1458-- $LynxId: INSTALLATION,v 1.121 2013/04/30 09:47:15 tom Exp $
1459