Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3584 | sourcerer | 1 | -------------------------------------------------------------------------------- |
2 | Build Instructions for Windows NetSurf 13 February 2010 |
||
3 | -------------------------------------------------------------------------------- |
||
4 | |||
5 | This document provides instructions for building the Windows version |
||
6 | of NetSurf and provides guidance on obtaining NetSurf's build |
||
7 | dependencies. |
||
8 | |||
9 | Windows NetSurf has been tested on Wine and Vista. |
||
10 | |||
11 | |||
12 | Building and executing NetSurf |
||
13 | ================================ |
||
14 | |||
15 | The windows netsurf port uses the MinGW (Minimal GNU on Windows) |
||
16 | system as its build infrastructure. This allows the normal netsurf |
||
17 | build process to be used. |
||
18 | |||
19 | The method outlined here to create executables cross compiles |
||
20 | windows executable from a Linux OS host. |
||
21 | |||
22 | First of all, you should examine the contents of Makefile.defaults |
||
23 | and enable and disable relevant features as you see fit by creating |
||
24 | a Makefile.config file. Some of these options can be automatically |
||
25 | detected and used, and where this is the case they are set to such. |
||
26 | Others cannot be automatically detected from the Makefile, so you |
||
27 | will either need to install the dependencies, or set them to NO. |
||
28 | |||
29 | You should then obtain NetSurf's dependencies, keeping in mind which |
||
30 | options you have enabled in the configuration file. See the next |
||
31 | section for specifics. |
||
32 | |||
33 | Once done, to build windows NetSurf on a UNIX-like platform, simply run: |
||
34 | |||
35 | $ export MINGW_PREFIX=i586-mingw32msvc- |
||
36 | $ export MINGW_INSTALL_ENV=/usr/i586-mingw32msvc/ |
||
37 | $ make TARGET=windows |
||
38 | |||
39 | If that produces errors, you probably don't have some of NetSurf's |
||
40 | build dependencies installed. See "Obtaining NetSurf's dependencies" |
||
41 | below. Or turn off the complaining features in a Makefile.config |
||
42 | file. You may need to "make clean" before attempting to build after |
||
43 | installing the dependencies. |
||
44 | |||
45 | You will need the libgnurx-0.dll from /usr/i586-mingw32msvc/bin/ |
||
46 | copied next to the exe and the windows/res directory available, also |
||
47 | next to the executable. |
||
48 | |||
49 | Run NetSurf by executing it: |
||
50 | |||
51 | $ wine NetSurf.exe |
||
52 | |||
53 | The staticaly linked binary which is generated may be several |
||
54 | megabytes in size, this can be reduced by stripping the binary. |
||
55 | |||
56 | $ i586-mingw32msvc-strip NetSurf.exe |
||
57 | |||
58 | |||
59 | Obtaining NetSurf's build dependencies |
||
60 | ======================================== |
||
61 | |||
62 | Package installation |
||
63 | ---------------------- |
||
64 | |||
65 | Debian-based OS: |
||
66 | |||
67 | The mingw cross compilation tools are required. These can be |
||
68 | installed as pakages on Debian/Ubuntu systems: |
||
69 | |||
70 | $ sudo apt-get install mingw32 mingw32-binutils mingw32-runtime |
||
71 | |||
72 | These provide a suitable set of compilers and headers including the win32 API. |
||
73 | |||
74 | The includes and associated libraries are installed in |
||
75 | /usr/i586-mingw32msvc/ Which is where the build system will include |
||
76 | files from by default. The packages at time of writing only target |
||
77 | 32bit windows builds. |
||
78 | |||
79 | Other: |
||
80 | |||
81 | For other OS the apropriate packages and environment must be installed. |
||
82 | |||
83 | pkg-config |
||
84 | ------------ |
||
85 | |||
86 | A pkg-config wrapper script is required to make things easier |
||
87 | |||
88 | cat > /usr/i586-mingw32msvc/bin/pkg-config < |
||
89 | #!/bin/bash |
||
90 | export PKG_CONFIG_LIBDIR=/usr/i586-mingw32msvc/lib/pkgconfig |
||
91 | /usr/bin/pkg-config $* |
||
92 | EOF |
||
93 | |||
94 | |||
95 | Base libraries |
||
96 | ---------------- |
||
97 | |||
98 | Unlike other OS the base libraries and their dependancies need to be |
||
99 | built and installed. |
||
100 | |||
101 | The instructions given here assume you will be installing on a |
||
102 | Debian derived OS using the mingw32 packages. The libraries should |
||
103 | be unpacked and built from a suitable temporary directory. |
||
104 | |||
105 | zlib: |
||
106 | |||
107 | $ apt-get source zlib1g |
||
108 | $ cd zlib-1.2.3.3.dfsg |
||
109 | $ CC=i586-mingw32msvc-gcc AR=i586-mingw32msvc-ar RANLIB=i586-mingw32msvc-ranlib CFLAGS="-DNO_FSEEKO" ./configure --prefix=/usr/i586-mingw32msvc/ |
||
110 | $ make |
||
111 | $ sudo make install |
||
112 | |||
113 | libiconv: |
||
114 | |||
115 | $ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz |
||
116 | $ tar -zxf libiconv-1.13.1.tar.gz |
||
117 | $ cd libiconv-1.13.1 |
||
118 | $ ./configure --prefix=/usr/i586-mingw32msvc/ --host=i586-mingw32msvc --disable-shared |
||
119 | $ make |
||
120 | $ sudo make install |
||
121 | |||
122 | regex: |
||
123 | |||
124 | $ wget http://kent.dl.sourceforge.net/project/mingw/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-src.tar.gz |
||
125 | $ tar -zxf mingw-libgnurx-2.5.1-src.tar.gz |
||
126 | $ cd mingw-libgnurx-2.5.1 |
||
127 | $ ./configure --prefix=/usr/i586-mingw32msvc/ --host=i586-mingw32msvc |
||
128 | $ make |
||
129 | $ sudo make install |
||
130 | |||
131 | openssl: |
||
132 | |||
133 | $ wget http://www.openssl.org/source/openssl-1.0.0a.tar.gz |
||
134 | $ tar -zxf openssl-1.0.0a.tar.gz |
||
135 | $ cd openssl-1.0.0a |
||
136 | $ PATH=/usr/i586-mingw32msvc/bin/:$PATH ./Configure no-shared disable-capieng --prefix=/usr/i586-mingw32msvc/ mingw |
||
137 | $ PATH=/usr/i586-mingw32msvc/bin/:$PATH make CC=i586-mingw32msvc-gcc RANLIB=i586-mingw32msvc-ranlib |
||
138 | $ sudo make install |
||
139 | |||
140 | libcurl: |
||
141 | |||
142 | $ wget http://curl.haxx.se/download/curl-7.26.0.tar.gz |
||
143 | $ tar -zxf curl-7.26.0.tar.gz |
||
144 | $ cd curl-7.26.0 |
||
145 | $ LDFLAGS=-mwindows ./configure --prefix=/usr/i586-mingw32msvc/ --host=i586-mingw32msvc --disable-shared --disable-ldap --without-random |
||
146 | $ make |
||
147 | $ sudo make install |
||
148 | |||
149 | libpng: |
||
150 | |||
151 | $ wget http://kent.dl.sourceforge.net/project/libpng/libpng14/1.4.12/libpng-1.4.12.tar.gz |
||
152 | $ tar -zxf libpng-1.4.12.tar.gz |
||
153 | $ cd libpng-1.4.12 |
||
154 | $ ./configure --prefix=/usr/i586-mingw32msvc/ --host=i586-mingw32msvc |
||
155 | $ make |
||
156 | $ sudo make install |
||
157 | |||
158 | libjpeg: |
||
159 | |||
160 | $ wget http://www.ijg.org/files/jpegsrc.v8d.tar.gz |
||
161 | $ tar -zxf jpegsrc.v8d.tar.gz |
||
162 | $ cd jpeg-8d |
||
163 | $ ./configure --prefix=/usr/i586-mingw32msvc/ --host=i586-mingw32msvc --disable-shared |
||
164 | $ make |
||
165 | $ sudo make install |
||
166 | |||
167 | The NetSurf project's libraries |
||
168 | --------------------------------- |
||
169 | |||
170 | The NetSurf project has developed several libraries which are required by |
||
171 | the browser. These are: |
||
172 | |||
173 | LibParserUtils -- Parser building utility functions |
||
174 | LibWapcaplet -- String internment |
||
175 | Hubbub -- HTML5 compliant HTML parser |
||
176 | LibCSS -- CSS parser and selection engine |
||
177 | LibNSGIF -- GIF format image decoder |
||
178 | LibNSBMP -- BMP and ICO format image decoder |
||
179 | LibROSprite -- RISC OS Sprite format image decoder |
||
180 | |||
181 | To fetch each of these libraries, run the appropriate commands from the |
||
182 | Docs/LIBRARIES file. |
||
183 | |||
184 | To build and install these libraries. |
||
185 | |||
186 | Ensure the MINGW_INSTALL_ENV variable is correctly set. |
||
187 | |||
188 | $ export MINGW_INSTALL_ENV=/usr/i586-mingw32msvc/ |
||
189 | |||
190 | Then simply enter each of their directories and run: |
||
191 | |||
192 | $ make TARGET=windows PREFIX=/usr/i586-mingw32msvc/ |
||
193 | $ sudo make TARGET=windows PREFIX=/usr/i586-mingw32msvc/ install |
||
194 | |||
195 | Resources |
||
196 | ----------- |
||
197 | |||
198 | The windows resources may be rebuilt. Currently there is 1 object |
||
199 | file included in the Git distribution of NetSurf that could be |
||
200 | manually compiled |
||
201 | |||
202 | $ cd windows/res |
||
203 | $ i586-mingw32msvc-windres resource.rc -O coff -o resource.o |