diff --git a/Docs/BUILDING-Framebuffer b/Docs/BUILDING-Framebuffer new file mode 100644 index 000000000..7a969b474 --- /dev/null +++ b/Docs/BUILDING-Framebuffer @@ -0,0 +1,172 @@ +-------------------------------------------------------------------------------- + Build Instructions for Framebuffer NetSurf 12 February 2009 +-------------------------------------------------------------------------------- + + This document provides instructions for building the Framebuffer version of + NetSurf and provides guidance on obtaining NetSurf's build dependencies. + + Framebuffer NetSurf has been tested on Ubuntu and Debian. + + Building and executing NetSurf +================================= + + First of all, you should examine the contents of Makefile.config and + enable and disable relevant features as you see fit in a + Makefile.config.override . 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. + + One option it is vitally important to set is the Framebuffer ports + frontend type by setting the NETSURF_FB_FRONTEND variable. The port + can run on a number of simple framebuffer implementations including + the linux framebuffer and an SDL surface. + + 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 Framebuffer NetSurf on a UNIX-like platform, simply run: + + $ make TARGET=framebuffer + + 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 Makefile.config. You may need to "make clean" + before attempting to build after installing the dependencies. + + Run NetSurf by executing the "nsfb" shell script: + + $ ./nsfb + + This script makes it easy to run the nsfb binary from the build tree. It + sets up some environment variables which enable NetSurf to find its + resources. + + Obtaining NetSurf's 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 svn checkouts. + + + Package installation +---------------------- + + Debian-like OS: + + $ apt-get install libglade2-dev libcurl3-dev libxml2-dev libmng-dev + $ apt-get install librsvg2-dev lemon re2c + + Recent OS versions might need libcurl4-dev instead of libcurl3-dev. + + Fedora: + + $ yum install libglade2-devel curl-devel libxml2-devel libmng-devel + $ yum install librsvg2-devel lcms-devel re2c + + Other: + + You'll need to install re2c, a tool which builds the CSS lexer, and the + development resources for libglade2, libcurl3, libxml2, libmng and librsvg. + + Note that if you don't require MNG or JNG image support, NetSurf can be + configured to use libpng instead of libmng. If you wish to do this, install + the libpng development package instead. + + Libnsbmp +---------- + + NetSurf has its own library for decoding and rendering BMPs, ICOs, etc. + You can check it out from svn://svn.netsurf-browser.org/trunk/libnsbmp + + To build and install it: + + $ sudo make install + + Libnsgif +---------- + + NetSurf has its own library for decoding and rendering GIFs. You can check + it out from svn://svn.netsurf-browser.org/trunk/libnsgif + + To build and install it: + + $ sudo make install + + Hubbub +-------- + + NetSurf can use Hubbub, the project's HTML parser, instead of using libxml2's + HTML parser. To build this, you will also require libparserutils. Firstly, + check out libparserutils from; + + svn://svn.netsurf-browser.org/trunk/libparserutils + + and do the usual "sudo make install". Once this is built and installed, you + can check out and build Hubbub. Check out hubbub from; + + svn://svn.netsurf-browser.org/trunk/hubbub + + and again do the usual "sudo make install". + + Librosprite +------------- + + NetSurf uses James Shaw's librosprite for rendering RISC OS Sprite files on + non-RISC OS platforms. The Makefile will automatically use librosprite if + it is installed. You can disable it entirely by editing Makefile.config. + + To build librosprite, check out from svn://svn.rjek.com/jshaw/libsprite/trunk + Build and install it: + + $ sudo make install + + Optionally, specify an install prefix: + + $ PREFIX=/path/to/install make install + + Libhpdf +--------- + + NetSurf can use Haru PDF to enable PDF export and printing in GTK. This + is currently enabled by default, and cannot be auto-detected by the Makefile. + If you wish to disable it, do so by editing Makefile.config. + + Haru PDF can be obtained from http://libharu.org/, although we currently + depend on features that none of the official released versions does have. + The current development versions of libharu are fine and we anticipate + the libharu 2.2 release will be fine for NetSurf usage. + A recently taken snapshot of one of those libharu development versions can + be found at: + + svn://svn.netsurf-browser.org/trunk/libharu + + Lemon +------- + + If your distribution does not package 'lemon' (Fedora doesn't) then you'll + need to download it and build it yourself. You may find it comes with the + SQLite packages (SQLite's parser is built with lemon). If not, try this: + + $ mkdir -p /usr/local/share/lemon + $ wget http://www.sqlite.org/cvstrac/getfile/sqlite/tool/lemon.c + $ wget -O /usr/local/share/lemon/lempar.c http://www.sqlite.org/cvstrac/getfile/sqlite/tool/lempar.c + $ sed -e's!lempar.c!/usr/local/share/lemon/lempar.c!' lemon.c > lem.c + $ gcc -o /usr/local/bin/lemon lem.c + + + General requirements +---------------------- + + Depending on the frontend selected the build may need specific + libraries installed, e.g. the SDL port requires SDL1.2 or later + + Installing these libraries will often will pull in loads of things, + like the PNG and JPEG libraries, colour management libraries, zlib, + OpenSSL etc that NetSurf also depends on. +