1--------------------------------------------------------------------------------
2  Build Instructions for BeOS and Haiku NetSurf               13 February 2010
3--------------------------------------------------------------------------------
4
5  This document provides instructions for building the BeOS and Haiku version
6  of NetSurf and provides guidance on obtaining NetSurf's build dependencies.
7
8  BeOS NetSurf has been tested on Zeta and Haiku only for now. There are still some
9  issues to sort out for other BeOS versions.
10
11  Quick Start
12=============
13
14  See the QUICK-START document, which provides a simple environment with
15  which you can fetch, build and install NetSurf and its dependencies.
16
17  The QUICK-START is the recommended way to build NetSurf for Haiku. BeOS needs too much manual
18  hacking to be built this way.
19
20
21  Manual building
22================================
23
24  To build NetSurf on a BeOS, provided you have the relevant
25  build dependencies installed, simply run:
26
27      $ make
28
29  If that produces errors, you probably don't have some of NetSurf's build
30  dependencies installed. See "Obtaining NetSurf's dependencies" below. You
31  may need to "make clean" before attempting to build after installing the
32  dependencies. Also note BeOS has an old make command that won't work, see
33  below.
34
35
36  Obtaining NetSurf's dependencies
37==================================
38
39  Many of NetSurf's dependencies are either installed or available for BeOS and
40  Haiku. The remainder must be installed manually.
41
42  The NetSurf project's libraries
43---------------------------------
44
45  The NetSurf project has developed several libraries which are required by
46  the browser. These are:
47
48  BuildSystem     --  Shared build system, needed to build the other libraries
49  LibParserUtils  --  Parser building utility functions
50  LibWapcaplet    --  String internment
51  Hubbub          --  HTML5 compliant HTML parser
52  LibCSS          --  CSS parser and selection engine
53  LibNSGIF        --  GIF format image decoder
54  LibNSBMP        --  BMP and ICO format image decoder
55  LibROSprite     --  RISC OS Sprite format image decoder
56
57  To fetch each of these libraries, run the appropriate commands from the
58  Docs/LIBRARIES file, from within your workspace directory.
59
60  To build and install these libraries, simply enter each of their directories
61  and run:
62
63      $ make install
64
65  | Note: We advise enabling iconv() support in libparserutils, which vastly
66  |       increases the number of supported character sets.  To do this,
67  |       create a file called Makefile.config.override in the libparserutils
68  |       directory, containing the following line:
69  |
70  |           CFLAGS += -DWITH_ICONV_FILTER
71  |
72  |       For more information, consult the libparserutils README file.
73
74  TODO: add some more here.
75
76  Additional requirements for BeOS
77==================================
78
79  On Haiku, other libraries and tools are either shipped with the system or available through the
80  package repositories. For BeOS based systems, you will need to install and update all the
81  required tools, as described below.
82
83  rc
84----
85
86  Building NetSurf needs the Haiku resource compiler (rc), that allows
87  importing files from resource definitions (.rdef).
88
89      $ cd <haiku-trunk-directory>
90      $ TARGET_PLATFORM=r5 jam -q rc
91      $ cp generated/objects/dano/x86/release/tools/rc/rc  /boot/home/config/bin/
92
93
94  GNU make 3.81
95---------------
96
97  BeOS has an old make tool, which won't work when building NetSurf.
98  Haiku has 3.81 which is the one that works. For BeOS, one has to replace
99  the original make with one built from the Haiku tree, or install it as gmake:
100
101      $ cd <haiku-trunk-directory>
102      $ TARGET_PLATFORM=r5 jam -q make
103      $ cp generated/objects/r5/x86/release/bin/make/make /boot/home/config/bin/gmake
104
105
106  cURL
107------
108
109  NetSurf uses cURL to fetch files from the network.
110  There is a patch against the official version on HaikuPorts.
111
112  TODO
113
114
115  libpng
116--------
117
118  NetSurf uses libPNG to display PNG files.
119  It should build just fine on BeOS.
120
121
122  libjpeg
123---------
124
125  NetSurf uses libjpeg to display JPEG files.
126  It should already be available in your dev kit.
127
128
129  OpenSSL
130----------
131
132  NetSurf uses OpenSSL for encrypted transfers.
133
134
135  General requirements
136----------------------
137
138  There is currently an issue on stdbool.h (unsigned char bool vs enum bool)
139  which needs to be fixed, for now one can use the Haiku version of the header
140  and copy it over the gcc-provided one.
141      $ cd <haiku-trunk-directory>
142      $ cp headers/build/gcc-2.95.3/stdbool.h /boot/develop/tools/gnupro/lib/gcc-lib/i586-pc-beos/2.95.3-beos-060710/include/stdbool.h
143
144
145  NetSurf might build on BeOS R5 but probably won't work on anything else than
146  BONE.
147