Getting ELinks up and running
-----------------------------

Installing ELinks should be pretty easy on most systems. Below is described
the whole process of configuring the compilation, compiling and installing.

Building and Installing ELinks
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The quick guide for the impatient. Issue the following commands from the
ELinks source directory:

	$ meson setup build
	$ meson compile -C build
	$ sudo meson install -C build

However you might consider to tweek a few compile time options before building
ELinks. You might also want to take a look at what libraries and programs are
required or recommended that you install.

Requirements
~~~~~~~~~~~~

To successfully install ELinks all that is required is meson
(version 1.0.1 or later) and a C compiler.

Recommended Libraries and Programs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To make use of many of ELinks features you will need to have some external
libraries and utility programs installed on your system. It is recommended to
have the following libraries and programs installed:

[separator="|"]
`_______________________`____________________________________________________
Dependency		|Description
_____________________________________________________________________________
Lua, Guile, python3, perl or ruby		|Makes it possible to write scripting plugins.	    \
ifdef::installation-webpage[]
			 See link:manual.html#lua-scripting[the Elinks - Lua interface]    \
endif::installation-webpage[]
ifndef::installation-webpage[]
			 See <<lua-scripting,the Elinks - Lua interface>>   \
endif::installation-webpage[]
			 for more info.
zlib 1.2.0.2 or later	|For handling gzip or deflate compressed documents   \
			 both locally and sent from server.
brotli			|For brotli compressed documents.
bzip2			|Likewise, for bzip2 compressed documents.
xz utils		|Likewise, for LZMA compressed documents.
zstd			|For zstd compressed documents.
OpenSSL, GNU TLS, or nss_compat_ossl \
			|For handling secure HTTP browsing and gemini.
libcurl		|For SFTP, FTPes and as an alternative protocol "engine" \
			 for http and ftp.
libevent or libev	|Alternative to the select an event loop library.
fsplib			|For FSP protocol.
pkg-config		|Needed for locating some libraries (at least	    \
			 GNU TLS, TRE, and SpiderMonkey).
GPM			|'General Purpose Mouse' for mouse support.
expat			|'XML Parser Toolkit' needed for XBEL support.
http://laurikari.net/tre/[TRE]						     \
			|For regexp searching.  Version 0.8.0 works.
libsmbclient		|Library needed for smb:// protocol support.
rxvt-unicode		|For terminal emulator which supports 88 colors.
xterm with 256 colors	|Program atleast patch level  179 or rxvt program   \
			 from version 2.7.9 for support of 256 colors.	    \
			 Newer PuTTY also has 256 color support.
libidn2		|For internationalized domain names.
SpiderMonkey		|Mozilla's JavaScript engine for getting	    \
			 JavaScript/ECMAScript support in ELinks.
QuickJS		|Alternative engine for JavaScript.
MuJS			|Another ECMAScript engine.
libsqlite		|For local storage in js.
libparserutils, libhubbub, libwapcaplet, libdom, libcss	|Libraries required \
			 for js and CSS support.
ifdef::installation-webpage[]
			 See also link:manual.html#ecmascript[notes on ECMAScript support].|
endif::installation-webpage[]
ifndef::installation-webpage[]
			 See also <<ecmascript,notes on ECMAScript support>>.|
endif::installation-webpage[]
_____________________________________________________________________________

When compiling, you also need the header files for the libraries. Most OS
distributors put a given library's headers in a package separate from the
library itself; this package usually has `-dev` or similar appended to its
name.

Further reading
~~~~~~~~~~~~~~~

This installation guide is far from being complete. You are also advised to
read the `README` and the `INSTALL` files distributed with ELinks for further
up to date info on building and installing.

ifndef::installation-webpage[]

include::small.txt[]

include::ecmascript.txt[]

include::{builddir}features.txt[]

endif::installation-webpage[]
