blob: 5794bf98b55ac4a5c98ef2c5d13f4f1cc667ab42 (
plain) (
blame)
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
|
The Servo Parallel Browser Project
Servo is a prototype web browser engine written in the
[Rust](https://github.com/mozilla/rust) language. It is currently developed on
64bit OS X, 64bit Linux, and Android.
Servo welcomes contribution from everyone. See
[`CONTRIBUTING.md`](CONTRIBUTING.md) for help getting started.
## Prerequisites
Note, on systems without glfw3 packages, you can compile from source. An
example can be found in [the TravisCI install
script](etc/ci/travis.install.sh).
On OS X (homebrew):
``` sh
brew install automake pkg-config python glfw3
pip install virtualenv
```
On OS X (MacPorts):
``` sh
sudo port install python27 py27-virtualenv
```
On Debian-based Linuxes:
``` sh
sudo apt-get install curl freeglut3-dev \
libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \
msttcorefonts gperf g++ cmake python-virtualenv \
libssl-dev libglfw3-dev
```
On Fedora:
``` sh
sudo yum install curl freeglut-devel libtool gcc-c++ libXi-devel \
freetype-devel mesa-libGL-devel glib2-devel libX11-devel libXrandr-devel gperf \
fontconfig-devel cabextract ttmkfdir python python-virtualenv expat-devel \
rpm-build openssl-devel glfw-devel
pushd .
cd /tmp
wget http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec
rpmbuild -bb msttcorefonts-2.5-1.spec
sudo yum install $HOME/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm
popd
```
On Arch Linux:
``` sh
sudo pacman -S base-devel git python2 python2-virtualenv mesa glfw ttf-font
```
Cross-compilation for Android:
Pre-installed Android tools are needed. See wiki for
[details](https://github.com/mozilla/servo/wiki/Building-for-Android)
## The Rust compiler
Servo uses a snapshot Rust compiler to build itself. This is normally a
specific revision of Rust upstream, but sometimes has a backported patch or
two. If you'd like to know the snapshot revision of Rust which we use, see
`./rust-snapshot-hash`.
## Building
Servo is built with Cargo, the Rust package manager. We also use Mozilla's
Mach tools to orchestrate the build and other tasks.
### Normal build
``` sh
git clone https://github.com/servo/servo
cd servo
./mach build
./mach run tests/html/about-mozilla.html
```
### Building for Android target
``` sh
git clone https://github.com/servo/servo
cd servo
ANDROID_TOOLCHAIN=/path/to/toolchain ANDROID_NDK=/path/to/ndk PATH=$PATH:/path/to/toolchain/bin ./mach build --android
cd ports/android
ANDROID_NDK=/path/to/ndk ANDROID_SDK=/path/to/sdk make
ANDROID_SDK=/path/to/sdk make install
```
Rather than setting the `ANDROID_*` environment variables every time, you can
also create a `.servobuild` file and then edit it to contain the correct paths
to the Android SDK/NDK tools:
```
cp servobuild.example .servobuild
# edit .servobuild
```
## Running
### Commandline Arguments
- `-p INTERVAL` turns on the profiler and dumps info to the console every
`INTERVAL` seconds
- `-s SIZE` sets the tile size for rendering; defaults to 512
- `-z` disables all graphical output; useful for running JS / layout tests
### Keyboard Shortcuts
- `Ctrl-L` opens a dialog to browse to a new URL (Mac only currently)
- `Ctrl--` zooms out
- `Ctrl-=` zooms in
- `Backspace` goes backwards in the history
- `Shift-Backspace` goes forwards in the history
- `Esc` exits servo
## Developing
There are lots of mach commands you can use. You can list them with `./mach
--help`.
|