mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-21 11:42:56 +03:00
3e2270482f
This makes the GTK resource handling configurable in the same way as all other pkg-config style feature options. It is now possible to completely disable compiled in resources if wanted as well as forcing inline pixdata on if desired.
240 lines
8.3 KiB
Plaintext
240 lines
8.3 KiB
Plaintext
--------------------------------------------------------------------------------
|
|
Build Instructions for GTK NetSurf 16 March 2014
|
|
--------------------------------------------------------------------------------
|
|
|
|
This document provides instructions for building the GTK version of NetSurf
|
|
and provides guidance on obtaining NetSurf's build dependencies.
|
|
|
|
GTK NetSurf has been tested on Debian, Ubuntu, Fedora 8, FreeBSD, NetBSD and
|
|
Solaris 10. NetSurf requires at minimum GTK 2.12.
|
|
|
|
|
|
Quick Start
|
|
=============
|
|
|
|
See the QUICK-START document, which provides a simple environment with
|
|
which you can fetch, build and install NetSurf and its dependencies.
|
|
|
|
The QUICK-START is the recommended way to build NetSurf.
|
|
|
|
|
|
Manual building
|
|
=================
|
|
|
|
If you can't follow the quick start instructions, you will have to build
|
|
NetSurf manually. The instructions for doing this are given below.
|
|
|
|
|
|
Obtaining the build dependencies
|
|
----------------------------------
|
|
|
|
Many of NetSurf's dependencies are packaged on various operating systems.
|
|
The remainder must be installed manually. Currently, some of the libraries
|
|
developed as part of the NetSurf project have not had official releases.
|
|
Hopefully they will soon be released with downloadable tarballs and packaged
|
|
in common distros. For now, you'll have to make do with Git checkouts.
|
|
|
|
Package installation
|
|
--------------------
|
|
|
|
Debian-like OS:
|
|
|
|
$ apt-get install libgtk2.0-dev libcurl3-dev libpng-dev
|
|
$ apt-get install librsvg2-dev libjpeg-dev
|
|
|
|
If you want to build with gtk 3 replace libgtk2.0-dev with libgtk-3-dev
|
|
|
|
Recent OS versions might need libcurl4-dev instead of libcurl3-dev but
|
|
note that when it has not been built with OpenSSL, the SSL_CTX is not
|
|
available and results that certification details won't be presented in case
|
|
they are invalid. But as this is currently unimplemented in the GTK
|
|
flavour of NetSurf, this won't make a difference at all.
|
|
|
|
For experimental javascript support the mozilla spiermonkey library
|
|
is required:
|
|
|
|
$ apt-get install libmozjs-dev
|
|
|
|
Fedora:
|
|
|
|
$ yum install curl-devel libpng-devel
|
|
$ yum install librsvg2-devel expat-devel
|
|
|
|
Other:
|
|
|
|
You'll need to install the development resources for libglade2, libcurl3,
|
|
libpng and librsvg.
|
|
|
|
Libharu
|
|
-------
|
|
|
|
NetSurf can use Haru PDF to enable PDF export. Haru PDF can be obtained
|
|
from http://libharu.org/. We require libharu 2.2 or later.
|
|
|
|
| Note: libharu cannot be auto-detected by the Makefile. If you wish to
|
|
| enable it, do so by creating a Makefile.config file.
|
|
|
|
|
|
Preparing your workspace
|
|
--------------------------
|
|
|
|
NetSurf has a number of libraries which must be built in-order and
|
|
installed into your workspace. Each library depends on a core build
|
|
system which NetSurf projects use. This build system relies on the
|
|
presence of things like pkg-config to find libraries and also certain
|
|
environment variables in order to work correctly.
|
|
|
|
Assuming you are preparing a workspace in /home/netsurf/workspace then
|
|
the following steps will set you up:
|
|
|
|
Make the workspace directory and change to it
|
|
---------------------------------------------
|
|
|
|
$ mkdir -p ${HOME}/netsurf/workspace
|
|
$ cd ${HOME}/netsurf/workspace
|
|
|
|
Make the temporary install space
|
|
--------------------------------
|
|
|
|
$ mkdir inst
|
|
|
|
Make an environment script
|
|
--------------------------
|
|
$ cat > env.sh <<'EOF'
|
|
export PKG_CONFIG_PATH=${HOME}/netsurf/workspace/inst/lib/pkgconfig::
|
|
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HOME}/netsurf/workspace/inst/lib
|
|
export PREFIX=${HOME}/netsurf/workspace/inst
|
|
EOF
|
|
|
|
Change to workspace and source the environment
|
|
----------------------------------------------
|
|
|
|
Whenever you wish to start development in a new shell, run the following:
|
|
|
|
$ cd ${HOME}/netsurf/workspace
|
|
$ source env.sh
|
|
|
|
From here on, any commands in this document assume you have sourced your
|
|
shell environment.
|
|
|
|
|
|
The NetSurf project's libraries
|
|
---------------------------------
|
|
|
|
The NetSurf project has developed several libraries which are required by
|
|
the browser. These are:
|
|
|
|
BuildSystem -- Shared build system, needed to build the other libraries
|
|
LibParserUtils -- Parser building utility functions
|
|
LibWapcaplet -- String internment
|
|
Hubbub -- HTML5 compliant HTML parser
|
|
LibCSS -- CSS parser and selection engine
|
|
LibNSGIF -- GIF format image decoder
|
|
LibNSBMP -- BMP and ICO format image decoder
|
|
LibROSprite -- RISC OS Sprite format image decoder
|
|
|
|
To fetch each of these libraries, run the appropriate commands from the
|
|
Docs/LIBRARIES file, from within your workspace directory.
|
|
|
|
To build and install these libraries, simply enter each of their directories
|
|
and run:
|
|
|
|
$ make install
|
|
|
|
| Note: We advise enabling iconv() support in libparserutils, which vastly
|
|
| increases the number of supported character sets. To do this,
|
|
| create a file called Makefile.config.override in the libparserutils
|
|
| directory, containing the following line:
|
|
|
|
|
| CFLAGS += -DWITH_ICONV_FILTER
|
|
|
|
|
| For more information, consult the libparserutils README file.
|
|
|
|
Now you should have all the NetSurf project libraries built and installed.
|
|
|
|
|
|
Getting the NetSurf source
|
|
----------------------------
|
|
|
|
From your workspace directory, run the following command to get the NetSurf
|
|
source:
|
|
|
|
$ git clone git://git.netsurf-browser.org/netsurf.git
|
|
|
|
And change to the 'netsurf' directory:
|
|
|
|
$ cd netsurf
|
|
|
|
Building and executing NetSurf
|
|
--------------------------------
|
|
|
|
First of all, you should examine the options in Makefile.defaults
|
|
and gtk/Makefile.defaults and enable and disable relevant features
|
|
as you see fit by editing a Makefile.config file.
|
|
|
|
Some of these options can be automatically detected and used, and
|
|
where this is the case they are set to such. Others cannot be
|
|
automatically detected from the Makefile, so you will either need to
|
|
install the dependencies, or set them to NO.
|
|
|
|
You should then obtain NetSurf's dependencies, keeping in mind which options
|
|
you have enabled in the configuration file. See the next section for
|
|
specifics.
|
|
|
|
Once done, to build GTK NetSurf on a UNIX-like platform, simply run:
|
|
|
|
$ make
|
|
|
|
If that produces errors, you probably don't have some of NetSurf's
|
|
build dependencies installed. See "Obtaining NetSurf's dependencies"
|
|
below. Or turn off the complaining features in a Makefile.config
|
|
file. You may need to "make clean" before attempting to build after
|
|
installing the dependencies.
|
|
|
|
Run NetSurf by executing the "test-nsgtk" shell script:
|
|
|
|
$ ./test-nsgtk
|
|
|
|
This script makes it easy to run the nsgtk binary from the build tree. It
|
|
sets up some environment variables which enable NetSurf to find its
|
|
resources.
|
|
|
|
Builtin resources
|
|
-------------------
|
|
|
|
There are numerous resources that accompany NetSurf, such as the
|
|
image files for icons, cursors and the ui builder files that
|
|
construct the browsers interface.
|
|
|
|
Some of these resources can be compiled into the browser executable
|
|
removing the need to install these resources separately. The GLib
|
|
library on which GTK is based provides this functionality to
|
|
NetSurf.
|
|
|
|
Up until GLib version 2.32 only the GDK pixbuf could be integrated
|
|
in this way and is controlled with the NETSURF_USE_INLINE_PIXBUF
|
|
variable (set in makefile.config).
|
|
|
|
Glib version 2.32 and later integrated support for any file to be a
|
|
resource while depreciating the old inline pixbuf interface. NetSurf
|
|
gtk executables can integrate many resources using this interface,
|
|
configuration is controlled with the NETSURF_USE_GRESOURCE variable.
|
|
|
|
Loading from file is the fallback if a resource has not been
|
|
compiled in, because of this if both of these features are
|
|
unavailable (or disabled) NetSurf will automatically fall back to
|
|
loading all its resources from files.
|
|
|
|
The resource initialisation within the browser ensures it can access
|
|
all the resources at start time, however it does not verify the
|
|
resources are valid so failures could still occur subsequently. This
|
|
is especially true for file based resources as they can become
|
|
inaccessible after initialisation.
|
|
|
|
|
|
Note for packagers
|
|
====================
|
|
|
|
If you are packaging NetSurf, see the PACKAGING-GTK document.
|
|
|