--------------------------------------------------------------------------------
  Build Instructions for RISC OS NetSurf                       16 January 2010
--------------------------------------------------------------------------------

  This document provides instructions for building the RISC OS NetSurf
  natively on a RISC OS computer and provides guidance on obtaining NetSurf's
  build dependencies.

  RISC OS NetSurf should work on RISC OS 4.02 and above.

  | Note: This guide assumes that you have the RISC OS SVN client installed,
  |       and that you have used it to fetch the NetSurf source.  It also
  |       assumes that you have the following requirements installed:
  |
  |           + OSLib 6.80 or later
  |           + Perl 5.8.8 or later
  |           + GCC 3.4.6 release 3 or later
  |           + The latest NSTools
  |
  |       For instructions on how to do all of the above, consult the following
  |       document:
  |
  |           http://www.netsurf-browser.org/documentation/robuild

  If you want to cross-compile NetSurf for RISC OS, use the BUILDING-ROCross
  document.


  Building and executing NetSurf
================================

  | Note: The version of make supplied with RISC OS GCC 3 is old and has a bug
  |       that prevents NetSurf from building.  Either ensure that NSTools is
  |       seen before GCC, or replace the make inside "!GCC.bin" with the make
  |       from "!NSTools.bin".
  |       The minimum version of make that works is v3.81.  You can check what
  |       version you have by running, '*make --version'.

  | Note: The pre-built libraries currently supplied in NSTools are AOF format,
  |       and will not work with GCC4, which requires them to be in ELF format.
  |       If you want to build NetSurf with GCC4, you will need to build the
  |       libraries yourself.  See "Obtaining NetSurf's dependencies" below for
  |       details.

  You can examine the contents of Makefile.defaults and enable and disable
  features as you see fit by creating a Makefile.config file.  The default
  settings will work fine.

  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 RISC OS NetSurf on a RISC OS system, set the CSD to the
  directory containing the NetSurf sources, set the next slot to at least
  6000K, and in a TaskWindow, simply run:

      *make

  If that produces errors, you probably don't have some of NetSurf's build
  dependencies installed, or your libraries may be out of date.
  
  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.

  Once NetSurf is compiled, the !RunImage is put into the !NetSurf
  application directory, so you can simply double click it as normal.

  To confirm that you're running your own development NetSurf build, view the
  Info window from the NetSurf iconbar menu.  The Version string should read

      #.0 (Development)

  where # is the next major release version number.


  Obtaining NetSurf's build dependencies
========================================

  NSTools contains all of the tools needed to build NetSurf, such as make,
  uname and ccres.  It also contains pre-built libraries.

  Currently NSTools contains libraries which are in a format that are in a
  format which is compatible with RISC OS GCC3 but not RISC OS GCC4.  Until
  NSTools is updated with GCC4 compatible libraries, it is recommended that
  you use GCC3 for native builds.

  The NSTools on the web site is not auto-built, so it may not always have
  the latest versions of the NetSurf project's own libraries.  In this case
  you will need to build the libraries yourself and update your copy of
  NSTools.

  Fetching the sources
----------------------

  Use SVN to obtain the latest versions of each of the libraries.  To do this,
  set the CSD to a directory where you want to keep your copies of the library
  sources, and run each of the following commands:

      *svn co svn://svn.netsurf-browser.org/tags/libparserutils/0.1.1
      *svn co svn://svn.netsurf-browser.org/tags/libwapcaplet/0.1.1
      *svn co svn://svn.netsurf-browser.org/tags/hubbub/0.1.2
      *svn co svn://svn.netsurf-browser.org/tags/libcss/0.1.2
      *svn co svn://svn.netsurf-browser.org/tags/libnsgif/0.0.3
      *svn co svn://svn.netsurf-browser.org/tags/libnsbmp/0.0.3
      *svn co svn://svn.netsurf-browser.org/tags/libsvgtiny/0.0.2
      *svn co svn://svn.netsurf-browser.org/tags/pencil/0.0.1
      *svn co svn://svn.netsurf-browser.org/tags/rufl/0.0.1

  The above will create a directory for each of the libraries containing their
  sources.

  | 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.

  Updating NSTools' copies of the libraries
-------------------------------------------

  Set the CSD to the directory of the library you want to build, set your next
  slot to at least 6000K and in a TaskWindow, run

      *svn update

  This updates your local copy of the source to the latest version.  To build
  and install the library into NSTools, run:

      *make install

  | Note: If you are using GCC3, you may get a warning from AR when you run
  |       make.  This can be ignored.
