INSTALL revision e39b573c
1-- $XTermId: INSTALL,v 1.125 2011/07/07 01:01:14 tom Exp $
2-------------------------------------------------------------------------------
3-- Copyright 1997-2010,2011 by Thomas E. Dickey
4--
5--                         All Rights Reserved
6--
7-- Permission is hereby granted, free of charge, to any person obtaining a
8-- copy of this software and associated documentation files (the
9-- "Software"), to deal in the Software without restriction, including
10-- without limitation the rights to use, copy, modify, merge, publish,
11-- distribute, sublicense, and/or sell copies of the Software, and to
12-- permit persons to whom the Software is furnished to do so, subject to
13-- the following conditions:
14--
15-- The above copyright notice and this permission notice shall be included
16-- in all copies or substantial portions of the Software.
17--
18-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21-- IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
22-- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23-- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25--
26-- Except as contained in this notice, the name(s) of the above copyright
27-- holders shall not be used in advertising or otherwise to promote the
28-- sale, use or other dealings in this Software without prior written
29-- authorization.
30-------------------------------------------------------------------------------
31
32Xterm was originally built as part of the X Window System source tree, using
33imake to generate a Makefile from Imakefile.  You can also use the configure
34script to generate a Makefile from Makefile.in:
35
36	+ If you have imake (or xmkmf), then you can use those directly,
37	  or use the configure script, which normally uses those tools
38	  to obtain the special definitions needed to build xterm.
39
40	  Ultimately, imake will not be necessary, since it is possible
41	  to add configure tests that derive the information that imake
42	  would supply.
43
44	+ You need the Athena widgets (or a clone, such as Xaw3d or
45	  neXtaw), to provide the popup menus.
46
47Even if you have imake, the configure script is still convenient because
48it allows you to build different configurations more easily than with
49imake, simply by specifying options to the configure script.
50
51Options:
52-------
53
54Autoconf configure scripts recognize two types of application-defined
55options, enable/disable and with/without.  The latter, by convention, are
56used for denoting inclusion of external packages, while the former denote
57enabling/disabling of internal features.  The configure --help option lists
58the available options.  This script uses "enable" and "disable" to indicate
59the sense of the default behavior.
60
61The options (in alphabetic order):
62
63  --disable-16-color      disable 16-color support
64
65	Do not compile-in code to recognize aixterm-style control sequences
66	that support color values 8-15.
67
68	Most color applications know only about 8 ANSI colors, but some
69	(e.g., ones built with ncurses) do.
70
71  --disable-active-icon   disable X11R6.3 active-icon feature
72
73	Do not compile-in code to support the active-icon feature.  This is
74	not configured on systems (e.g., X11R5) which lack the library
75	support needed.
76
77	Xterms with an active icon continue to respond to input and update
78	their display when iconified.  Not all window managers support
79	active icons.  Those that do include fvwm, olvwm and mwm.
80
81  --disable-ansi-color    disable ANSI color
82
83  	Do not compile-in code for ANSI colors.
84
85  --disable-blink-cursor  disable support for blinking cursor
86
87	Do not compile-in code that implements a blinking cursor.  The blinking
88	cursor is enabled either by resource setting or by popup menu entry.
89
90  --disable-bold-color    disable PC-style mapping of bold colors
91
92	Do not compile-in code that maps colors 8-15 to bold versions of
93	colors 0-7.
94
95	Some applications have hardcoded logic that assumes this.  It does
96	not interfere with the 16-color support.
97
98  --disable-boxchars      disable fallback-support for box chars
99
100  	Do not compile-in code to generate approximations for box/graphic
101	characters.
102
103	Most fonts do not contain the vt100-style graphic characters in
104	positions 0-31.  Many applications use the line-drawing characters,
105	e.g., to make boxes.  When xterm loads a font, it checks if those
106	characters are present, and draws its own if they are missing.
107
108  --disable-broken-st     disallow broken string-terminators],
109
110	Do not compile-in code that works around a bug in some ISDN routers
111	(and possibly other applications written by the same people):  they
112	send an unterminated control string in their banner text, making xterm
113	freeze.
114
115	The workaround tells xterm to stop processing the control string when
116	it receives one of the whitespace control characters such as newline.
117	That was the behavior before patch #171.
118
119	See also --enable-broken-osc
120
121  --disable-c1-print      disallow -k8 option for printable 128-159],
122
123	Use this option to suppress support for nonstandard use of codes
124	128-159, which normally are considered control characters.  Some users
125	have fonts which use those positions.  The default value for the
126	allowC1Printable resource is false, so this feature does not impact
127	normal users.
128
129  --disable-color-class   disable color class resources
130
131	Use this option to change most of the color resources to use Foreground
132	as the color class.  This is the older (before patch #157) behavior
133	which has the drawback that setting the Foreground resource on most
134	platforms prevents use of color since the class is evaluated before
135	the instance.
136
137  --disable-color-mode    disable default colorMode resource
138
139  	Do not compile-in code that sets the default value of the colorMode
140	resource to ``true''.
141
142  --disable-desktop       disable install of xterm desktop files
143
144	Do not install the xterm desktop files, used in menus.
145	These use the icons installed in the --with-icondir option.
146	Use the environment variable $DESKTOP_FLAGS to supply options
147	required by desktop-file-install.
148
149	Note: If desktop-utils is not found they will not be installed anyway.
150
151  --disable-doublechars   disable support for double-size chars
152
153  	Do not compile-in code that supports font-manipulation needed to
154	implement vt100-style double-sized characters.
155
156  --disable-echo          test: display "compiling" commands
157
158  	Modify the generated Makefile so that most compiler options are
159	not shown.  This makes it simpler to read a build log and see the
160	actual warning messages.
161
162  --disable-fifo-lines    enable FIFO-storage for saved-lines
163
164	With patch #244, xterm by default stores saved-lines in a FIFO
165	(circular buffer), which improves performance when the number of saved
166	lines is large.  Disable this option to revert to the pre-244 layout.
167
168  --disable-freetype      disable freetype library-support
169
170 	Do not use freetype libraries if they are found.  Normally they will
171	be used automatically.
172
173  --disable-full-tgetent  disable check for termcap library
174
175  	Do not look for the tgetent() function specifically in the termcap
176	library, accept the first library (from termlib, ncurses and curses)
177	which contains this function rather than continuing to search for
178	a termcap implementation rather than terminfo.  The former would
179	supply the complete $TERMCAP data needed for some legacy programs.
180
181  --disable-highlighting  disable support for color highlighting
182
183  	Do not compile-in code that allows the selected region to be a
184	different color than the reverse of foreground/background colors.
185
186	See the discussion of highlightColor in the manual.
187
188  --disable-i18n          disable internationalization
189
190  	Do not compile-in code to handle multi-byte characters.  This is
191	related to, but not identical with the input method logic.
192
193  --disable-imake         disable use of imake for definitions
194
195  	Do not attempt to use imake to determine compiler options.
196
197	The main.c file has many ifdef's which rely on obscure combinations
198	known only to imake.  The configure script implements only a
199	portion of the tests needed to supplant imake.
200
201  --disable-initial-erase disable setup for stty erase
202
203	Do not compile-in code which aligns the stty erase and the backarrow
204	key.  When compiled-in, xterm will optionally use the pty's sense
205	of stty erase and apply that to the backarrow mode (sending 8 or 127),
206	or go the other way, setting stty erase to match xterm's configuration.
207
208  --disable-input-method  disable input-method
209
210	Do not compile-in code for "input method".  This is an X11R6
211	feature which deals with translation of composite characters.
212
213	Some users report problems with their configuration, e.g., messages
214	stating that there is no input method defined for the given preedit
215	type.  If you do not need input method (and are troubled by the
216	warning messages), it is safe to disable this option.
217
218  --disable-leaks         test: set to test memory leaks
219
220  	Compile-in code which frees memory which might confuse a leak-testing
221	tool.  Normally these chunks of memory are retained as long as xterm
222	is running.
223
224  --disable-maximize      disable actions for iconify/deiconify/maximize/restore
225
226	Do not compile-in code that implements runtime 'actions' for
227	iconifying, maximizing, etc.
228
229	Most users will find that the window manager is more suitable for
230	this sort of manipulation than putting the capabilities into xterm.
231
232  --disable-num-lock      disable NumLock keypad support
233
234	Do not compile-in code that looks for the actual NumLock key to
235	support vt100/vt220 keypad translation.
236
237	This is used in xterm to simplify logic, and to workaround some
238	quirks of the keyboard tables.  Use the ``numLock'' resource to
239	disable this feature if you must customize xterm in some other way.
240
241	(The same ifdef controls the metaSendsEscape support).
242
243  --disable-paste64       disable support for bracketed paste mode
244
245	Do not compile-in code to support experimental bracketed paste mode,
246	i.e., provide functions for setting/getting the selection data.
247
248	(see ctlseqs.ms description of OSC 52).
249
250  --disable-pty-handshake disable support for pty handshakes
251
252	This feature is used to ensure that the child process's terminal modes
253	match the parent's.  In particular, it addresses a problem where the
254	terminal size is not defined in the stty settings.
255
256  --disable-rectangles    disable VT420 rectangle support
257
258	Do not compile-in code to support VT420 rectangle control-sequences.
259
260  --disable-regex         disable regular-expression selections
261
262	Do not compile-in code to support the "regex" option for multiple
263	mouse clicks.
264
265  --disable-rightbar      disable right-scrollbar support
266
267  	Do not compile-in code that supports a scrollbar on the right.
268
269	Left/right scrollbars are a matter of taste.  Some older libraries
270	(e.g., X11R5) do not perform the geometry computation correctly,
271	leaving the right scrollbar incorrectly positioned after changing
272	the font size.
273
274  --disable-rpath-hack    don't add rpath options for additional libraries
275
276	By default, the configure script looks for libraries in unusual places
277	and adds an rpath linker option to help.
278
279  --disable-samename      disable check for redundant name-change
280
281	Do not compile-in code that suppresses redundant updates to the
282	titlebar when the text has not changed.
283
284  --disable-session-mgt   enable support for session management
285
286	Do not compile-in code which adds simple session management hooks
287	which are used when closing an xterm.  Normally the code is
288	compiled-in, except for systems which do not support it.
289
290  --disable-setgid        disable setgid
291
292	Do not install xterm using setuid/setgid permissions.  Drop setgid
293	permissions on startup.
294
295  --disable-setuid        disable setuid
296
297	Do not install xterm using setuid/setgid permissions.  Drop setuid
298	permissions on startup.
299
300  --disable-sun-fkeys
301
302  	Do not compile-in code to support Sun-style function keys.
303
304  --disable-tcap-fkeys    disable termcap function-keys
305
306	Do not compile-in code to support feature which allows xterm to use the
307	function-key definitions from the termcap/terminfo entry which it used
308	to set the $TERM variable on startup.
309
310  --disable-tcap-query    disable termcap query/report
311
312	Do not compile-in code to support DCS '+' control sequence, which
313	allows an application to ask xterm what control sequences it would
314	transmit for specified function keys, given the termcap or terminfo
315	names.
316
317  --disable-tek4014       disable tek4014 emulation
318
319  	Do not compile-in code to support Tektronix 4014 emulation.
320
321	This reduces the executable size by 17% (checked 1999/3/13).
322
323	Some people use the Tektronix emulation (which has been in xterm
324	for many years) as an example of code bloat, though this is not an
325	accurate impression.
326
327  --disable-vt52          disable VT52 emulation
328
329  	Do not compile-in code to support vt52 emulation.
330
331	A genuine vt100 emulates a vt52.
332
333  --disable-ziconbeep     disable -ziconbeep option
334
335	Do not compile-in code that modifies the icon's title and sounds a
336	beep when they receive output.
337
338  --enable-16bit-chars    enable 16-bit characters support
339
340	Enable wide-character support, but store only 16-bits for each wide
341	character.  Unicode values can be larger than 16-bits, up to 21-bits.
342	This uses less memory, but is less complete.  However, most languages
343	are covered by the 16-bit encoding.
344
345  --enable-256-color      enable 256-color support
346
347  	Compile-in code that interprets SGR 38 and 48 for 256-colors.
348
349  --enable-88-color       enable 88-color support
350
351	Compile-in code that interprets SGR 38 and 48 for 88-colors.
352
353  --enable-broken-osc     allow broken Linux OSC-strings],
354
355	Compile-in code to accommodate scripts that write Linux's malformed
356	palette control strings without checking.  The result makes xterm
357	appear to freeze.  This workaround makes xterm ignore the strings,
358	and is compiled-in by default for Linux.
359
360  --enable-dabbrev        enable dynamic-abbreviation support
361
362	Compile-in support for "dabbrev-expand()" action and related key
363	translation.
364
365  --enable-dec-locator    enable DECterm Locator support
366	Add support for DEC Locator control sequences for xterm:
367
368		DECEFR - Enable Filter Rectangle
369	        DECELR - Enable Locator Reports
370		DECSLE - Select Locator Events
371		DECRQLP - Request Locator Position
372
373	This allows the xterm mouse to be used with applications that use the
374	DEC Locator sequences, such as VAX Tpu, or SMG$ based applications.
375
376  --enable-exec-xterm     enable "spawn-new-terminal" action
377
378  	If your platform supports the process filesystem "cwd" link,
379	compile-in support for the "spawn-new-terminal" action, which
380	allows you to define a key translation that runs a new xterm
381	using the same working directory as the current process within
382	xterm.
383
384  --enable-hp-fkeys       enable support for HP-style function keys
385
386  	Compile-in code to support HP-style function keys.
387
388  --enable-load-vt-fonts  enable load-vt-fonts() action
389
390  	Compile-in code that allows user to define load different VT-font
391	definitions at runtime.
392
393  --enable-logfile-exec   enable exec'd logfile filter
394
395  	Compile-in code that allows logging piped via an external filter.
396
397  --enable-logging        enable logging
398
399  	Compile-in code that allows logging.
400
401	Logging was disabled in X11R5 xterm because of security problems.
402	They were addressed in X11R6, but the feature was not reinstated.
403
404  --enable-luit           enable support for luit filter (Unicode translation)
405
406	Luit is a filter that can be run between an arbitrary application and a
407	UTF-8 terminal emulator.  It will convert application output from the
408	locale's encoding into UTF-8, and convert terminal input from UTF-8
409	into the locale's encoding.
410
411	This sets "--enable-wide-chars" as a side-effect.
412
413  --enable-mini-luit      enable support for poor man's luit filter (Latin-9)
414
415	Provide built-in support for Latin-9, relying on having specified
416	Unicode (ISO10646) fonts and setting the locale resource to "checkfont".
417
418	This sets "--enable-luit" as a side-effect.
419
420  --enable-narrowproto    enable narrow prototypes for X libraries
421
422	Originally xterm was built using imake rather than a configure script. 
423	One feature of imake that is not possible to guess within the
424	configure script is the wide-prototype compile-time definition
425	NARROWPROTO.  When this is not set properly, the Athena widget
426	scrollbars do not work properly.  xterm's configure script has a
427	fallback case which allows disabling imake.  However, this is moot
428	with the X.org "modular" build, whose compiler options are unrelated to
429	imake or older versions of any libraries that it may distribute.  In
430	this case, the configure script needs some help.  Use this option to
431	enable or disable NARROW proto (and disable imake with the
432	--disable-imake option) to match the whims of X.org hackers.
433
434	For instance
435
436		configure --disable-imake --disable-narrowproto
437
438  --enable-readline-mouse enable support for mouse in readline applications
439
440	Compile-in code to support experimental bracketed paste mode, i.e.,
441	provide functions for setting/getting the selection data.  Essentially
442	this puts xterm into a mode that sends special function-key strings to
443	bracket the data.
444
445	(See --enable-paste64, which fits xterm's protocol better).
446
447  --enable-sco-fkeys      enable support for SCO-style function keys
448
449  	Compile-in code to support SCO-style function keys.
450
451  --enable-sun-fkeys      enable support for Sun-style function keys
452
453  	Compile-in code to support Sun-style function keys.
454
455  --enable-toolbar        enable pulldown menus on toolbar
456
457  	Compile-in code that builds a toolbar with pulldown menus.  The
458	normal popup menus are still available.
459
460	This is an experimental option.  As of patch #206, it is known to
461	work well with fvwm, but not as well with some other window managers,
462	e.g., KDE's Kwin and IceWM.
463
464	In addition to isolated layout problems, it is reported that some
465	flavors of the Athena widget library perform badly with ISO-10646
466	fonts.  You can work around those by setting the menu fonts to
467	an ISO-8859 variant in your X resources.
468
469  --enable-trace          test: set to enable debugging traces
470
471  	Compile-in code to trace xterm's internal states.
472
473	This is a debugging feature.  It causes xterm to produce two files
474	(Trace-parent.out and Trace-child.out).
475
476  --enable-warnings       test: turn on GCC compiler warnings
477
478	Modify the generate Makefile to turn on gcc compiler warnings.
479
480	I use this option regularly, and correct all but a few (difficult)
481	problems.
482
483  --enable-wide-chars     enable wide-character support
484
485  	Compile-in code that supports 16-bit characters.  Includes support
486	for UTF-8.
487
488  --enable-xmc-glitch     test: enable xmc magic-cookie emulation
489
490  	Compile-in code that simulates the terminfo "magic cookie" glitch.
491
492	This is for testing ncurses.
493
494  --with-Xaw3d            link with Xaw 3d library
495
496  	Look for, compile and link with the Xaw 3d widget library.
497
498  --with-XawPlus          link with Athena-Plus library
499
500  	Look for, compile and link with the Xaw Plus widget library.
501
502  --with-app-class=XXX    X resource class (default: XTerm)
503
504	Rename the X resource class, e.g., for packaging a development version
505	of xterm with different result names.
506
507  --with-app-defaults=DIR directory in which to install resource files (default: EPREFIX/lib/X11/app-defaults)
508
509	autoconf scripts assume that all of the files should be installed
510	under the same top-level directory.  But X applications defaults
511	must be installed into a special directory, e.g.,
512
513		/usr/X11/lib/app-defaults
514
515	However, there is no standard for this pathname.  The manual page
516	for X notes that the environment variable $XUSERFILESEARCHPATH can
517	specify a list of places where X searches for applications defaults.
518	Also, it may look in $XAPPLRESDIR, but that usually is not related
519	to where xterm might be installed.  To keep it simple, the configure
520	script uses
521
522		EPREFIX/lib/X11/app-defaults
523
524	as the default (EPREFIX is --prefix).  That makes it work normally
525	for most systems if --prefix is /usr.  For other installs, e.g., to
526	/usr/local, you should use this option to customize the location to
527	match your system configuration.
528
529	Use --without-app-defaults or --with-app-defaults=no to disable the
530	feature.
531
532  --with-desktop-category=XXX  one or more desktop catgories or auto
533	This is a list of names.  The configure script maps blanks and commas
534	to semicolons (";") which are used by the desktop utils as a separator.
535
536	The default value "auto" tells the configure script to look
537	at existing ".desktop" files for xterm and common terminal
538	emulators, to use those.
539
540  --with-freetype-cflags  -D/-I options for compiling with FreeType library
541
542	Override options provided by xft-config or freetype-config.
543
544  --with-freetype-libs    -L/-l options for linking with FreeType library
545
546	Override options provided by xft-config or freetype-config.
547
548  --with-icondir=DIR directory in which to install icon files (default: EPREFIX/share/pixmaps)
549
550	The X libraries may automatically search these locations:
551
552	$HOME/.icons
553	$XDG_DATA_DIRS/icons
554	/usr/share/pixmaps
555
556	See also
557	http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
558
559	Use --without-icondir or --with-icondir=no to disable the feature.
560
561  --with-neXtaw           link with neXT Athena library
562
563  	Look for, compile and link with the neXT Athena widget library.
564
565  --with-own-terminfo=P   set default $TERMINFO (default: from environment)
566
567  	Modify the generated Makefile to set the target for the 'install-ti'
568	rule to point to the given directory.
569
570	If you have the $TERMINFO variable defined in your environment, the
571	configure script will use that value.  If no option and no variable
572	are are given, the configure script uses /usr/lib/terminfo, if it
573	exists.
574
575	You do not have to run "make install-ti", if there is already a
576	workable terminfo description.  Be advised, however, that the
577	common variety of "xterm-color" is not suited for xterm, but is
578	directed to other variations (such as nxterm) which do not
579	support the background-color erase capability.
580
581  --with-pcre             use PCRE for regular-expressions
582
583	If regular expressions are not disable (--disable-regex), use PCRE
584	rather than the POSIX regular expressions.
585
586  --with-pkg-config{=path} enable/disable use of pkg-config
587
588	The configure script looks for certain libraries which have well
589	established pkg-config scripts, and will use those settings if
590	available.  Not all pkg-config scripts work; this option suppresses
591	the check and relies on normal library search paths.
592
593  --with-reference=XXX    program to use as permissions-reference
594
595	To install xterm with setuid permissions, the scripts usually compare
596	it with a previous install.  That works well for individual
597	maintainers, but can be a problem for packagers who may be
598	cross-compiling, etc.  This option lets the package builder specify
599	the file used for permissions reference.
600
601  --with-setuid=XXX       use the given setuid user
602
603	Install xterm setuid'd to the given user.  If no parameter value
604	is given, assume it is root.
605
606	See also --with-utmp-setgid and --with-utempter, which manipulate
607	the setgid group.
608
609  --with-tty-group=XXX    use XXX for the tty-group
610
611	If xterm is installed setuid'd to root, change the group of the tty
612	device to the given value on startup.  Three cases are possible:
613	
614	a) If this option is not given, the configure script will attempt to
615	   find a suitable value (usually "tty"), and verify that it exists in
616	   the group database.
617
618	b) If the option value is given, it will use the value even if it does
619	   not exist in the group database (allowing packagers to work about
620	   deficient environments).
621
622	c) If the option is disabled, e.g., --without-tty-group, the
623	   permissions change will use the group-id of the process.
624
625	If xterm is not installed setuid'd to root, this option is not needed,
626	since it cannot change the tty device's ownership.
627
628  --with-xterm-symlink=XXX  make symbolic link to installed xterm
629
630	If any of the configure options to modify the program name i.e.,
631	--program-prefix, --program-suffix or --program-transform-name
632	are given, this option allows the makefile to create a symbolic link,
633	e.g., to "xterm" on install.  The option value gives the name for
634	the link, which defaults to "xterm".
635
636	Use --without-xterm-symlink to disable a link to "xterm" if none
637	is wanted.
638
639  --with-terminal-id[=V]  set default decTerminalID (default: vt100)
640
641  	Set the default emulation level.
642
643	DEC terminals vt52/vt100/vt220/etc form a series where succeeding
644	models emulate features of the older terminals.  While most
645	features of these terminals are recognized by xterm at all levels,
646	a few behave differently according to the emulation level.
647
648	You can always override this with the command-line option "-ti".
649
650  --with-terminal-type=T  set default $TERM (default: xterm)
651
652	Set the default value for $TERM.  Xterm supports legacy termcap
653	applications by constructing a modified version of the $TERMCAP
654	variable at initialization, which supplies the resulting screen
655	size.  It also sets $TERM, if not already set, for use by programs
656	running within xterm.
657
658	The default value "xterm", can be overridden to avoid conflict
659	with older versions of xterm, e.g., those that do not implement
660	vt220 emulation.
661
662	You can always override this with the command-line option "-tn".
663
664  --with-utempter         use utempter library for access to utmp
665
666	The utempter library is a set-uid wrapper for the utmp facility.
667	On systems with Unix98 pty's, xterm can use this library when
668	available so it need not be installed set-uid.
669
670  --with-utmp-setgid=XXX  use setgid for access to utmp
671
672	The option value specifies a group to use when installing.
673	xterm will be installed with setgid privilege to this group.
674	At runtime, xterm will drop the setuid privilege immediately
675	after opening the pseudo-terminal, and will have only the
676	group privilege needed to access the utmp file.  This relies
677	on having POSIX setuid behavior.
678
679-- vile:txtmode
680