summaryrefslogtreecommitdiff
path: root/Docs/BUILDING-GTK
blob: 52be184eb5bdf965ec453e5692c24eb36570aefa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
--------------------------------------------------------------------------------
  Build Instructions for GTK NetSurf                            12 August 2008
--------------------------------------------------------------------------------

  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.


  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.  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 dependancies, 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 Makefile.config. You may need to "make clean"
  before attempting to build after installing the dependencies.

  Run NetSurf by executing the "netsurf" shell script:

      $ ./netsurf

  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.

  If you are packaging NetSurf, see the PACKAGING-GTK document.


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

  Many of NetSurf's dependencies are packaged on various operating systems.
  The remainder must be installed manually.  Hopefully the number of NetSurf-
  related libraries required will have official releases, downloadable tarballs
  and such.  But for now, you'll have to 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

  Fedora:

      $ yum install libglade2-devel curl-devel libxml2-devel libmng-devel
      $ yum install librsvg2-devel lcms-devel re2c

  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 it if it can find
  it.  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.sourceforge.net/, although we
  currently depend on features that the official version does not have.  You
  can obtain our patched version from the following Subversion address until
  the patches are accepted upstream;

      svn://svn.netsurf-browser.org/branches/libharu/adamblokus

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

  NetSurf requires at minimum GTK 2.10. Earlier versions will not work. It also
  depends on Cairo for rendering, but you should have this already with
  versions of GTK 2.10 or later.

  This will pull in loads of things, like all the GTK dev libraries, the PNG
  and JPEG libraries, colour management libraries, zlib, OpenSSL etc that
  NetSurf also depends on.