2013-05-30 16:36:45 +00:00
|
|
|
The Servo Parallel Browser Project
|
2012-02-08 19:29:12 +00:00
|
|
|
|
2013-02-14 19:08:57 +00:00
|
|
|
Servo is a prototype web browser engine written in the [Rust](https://github.com/mozilla/rust)
|
2013-03-26 18:26:24 +00:00
|
|
|
language. It is currently developed on 64bit OS X and 64bit Linux.
|
2012-08-18 02:41:22 +00:00
|
|
|
|
2013-10-14 15:28:11 +00:00
|
|
|
Servo welcomes contribution from everyone. See
|
|
|
|
[`CONTRIBUTING.md`](CONTRIBUTING.md) for help getting started.
|
|
|
|
|
2012-10-18 06:24:02 +00:00
|
|
|
## Prerequisites
|
|
|
|
|
2012-08-22 18:50:10 +00:00
|
|
|
On OS X (homebrew):
|
2012-05-10 22:20:26 +00:00
|
|
|
|
2013-04-04 16:49:08 +00:00
|
|
|
``` sh
|
|
|
|
brew install https://raw.github.com/Homebrew/homebrew-versions/master/autoconf213.rb
|
2014-08-05 13:31:21 +00:00
|
|
|
brew install automake libtool pkg-config python
|
|
|
|
pip install virtualenv
|
2013-04-04 16:49:08 +00:00
|
|
|
```
|
2012-05-10 22:20:26 +00:00
|
|
|
|
2012-08-22 18:50:10 +00:00
|
|
|
On OS X (MacPorts):
|
|
|
|
|
2013-04-04 16:49:08 +00:00
|
|
|
``` sh
|
2014-08-05 13:31:21 +00:00
|
|
|
sudo port install autoconf213 python27 py27-virtualenv
|
2013-04-04 16:49:08 +00:00
|
|
|
```
|
2014-08-05 13:31:21 +00:00
|
|
|
|
2012-05-10 22:20:26 +00:00
|
|
|
On Debian-based Linuxes:
|
|
|
|
|
2013-04-04 16:49:08 +00:00
|
|
|
``` sh
|
2013-07-10 17:12:46 +00:00
|
|
|
sudo apt-get install autoconf2.13 curl freeglut3-dev libtool \
|
2014-03-01 00:40:38 +00:00
|
|
|
libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \
|
2014-08-05 13:31:21 +00:00
|
|
|
msttcorefonts gperf g++ automake cmake python-virtualenv
|
2013-04-04 16:49:08 +00:00
|
|
|
```
|
2012-05-10 22:20:26 +00:00
|
|
|
|
2014-07-07 19:09:01 +00:00
|
|
|
On Fedora:
|
2014-04-17 01:31:08 +00:00
|
|
|
|
|
|
|
``` sh
|
2014-08-10 23:28:50 +00:00
|
|
|
sudo yum install autoconf213 curl freeglut-devel libtool gcc-c++ libXi-devel \
|
2014-08-26 20:12:42 +00:00
|
|
|
freetype-devel mesa-libGL-devel glib2-devel libX11-devel libXrandr-devel gperf \
|
2014-08-10 23:28:50 +00:00
|
|
|
fontconfig-devel cabextract ttmkfdir python python-virtualenv expat-devel rpm-build
|
2014-04-17 01:31:08 +00:00
|
|
|
pushd .
|
|
|
|
cd /tmp
|
|
|
|
wget http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec
|
|
|
|
rpmbuild -bb msttcorefonts-2.5-1.spec
|
2014-08-05 13:31:21 +00:00
|
|
|
sudo yum install $HOME/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm
|
2014-04-17 01:31:08 +00:00
|
|
|
popd
|
|
|
|
```
|
|
|
|
|
2014-09-06 09:17:27 +00:00
|
|
|
On Arch Linux:
|
|
|
|
|
|
|
|
``` sh
|
|
|
|
sudo pacman -S base-devel autoconf2.13 git gperf python2 \
|
|
|
|
python2-virtualenv mesa libxrandr libxi libgl glu ttf-font
|
|
|
|
```
|
|
|
|
|
2014-09-06 11:01:03 +00:00
|
|
|
Note: autoconf 2.13 is required for SpiderMonkey; the autoconf project did not
|
|
|
|
preserve backwards compatibility after version 2.13, and changing the Firefox
|
|
|
|
build to work with a newer version is not considered a good use of developers'
|
|
|
|
time.
|
|
|
|
|
2014-05-09 02:55:10 +00:00
|
|
|
Cross-compilation for Android:
|
2013-08-28 02:21:34 +00:00
|
|
|
|
2014-05-09 02:55:10 +00:00
|
|
|
Basically, pre-installed Android tools are needed.
|
2014-02-25 21:01:38 +00:00
|
|
|
See wiki for [details](https://github.com/mozilla/servo/wiki/Building-for-Android)
|
2013-08-28 02:21:34 +00:00
|
|
|
|
2014-08-22 20:34:52 +00:00
|
|
|
## The Rust compiler
|
|
|
|
|
2013-01-10 02:52:17 +00:00
|
|
|
Servo builds its own copy of Rust, so there is no need to provide a Rust
|
|
|
|
compiler.
|
2014-08-22 20:34:52 +00:00
|
|
|
If you'd like to know the snapshot revision of Rust which we use, see `./rust-snapshot-hash`.
|
2013-01-10 02:52:17 +00:00
|
|
|
|
2012-10-18 06:24:02 +00:00
|
|
|
## Building
|
2012-05-05 23:51:26 +00:00
|
|
|
|
2013-07-10 17:12:46 +00:00
|
|
|
Servo cannot be built in-tree; you must create a directory in which to run
|
|
|
|
configure and make and place the build artifacts.
|
|
|
|
|
2013-04-04 16:49:08 +00:00
|
|
|
``` sh
|
2013-07-19 16:39:32 +00:00
|
|
|
git clone https://github.com/mozilla/servo.git
|
2013-04-04 16:49:08 +00:00
|
|
|
cd servo
|
|
|
|
mkdir -p build && cd build
|
|
|
|
../configure
|
|
|
|
make && make check
|
2013-05-30 02:30:47 +00:00
|
|
|
./servo ../src/test/html/about-mozilla.html
|
2013-04-04 16:49:08 +00:00
|
|
|
```
|
2013-03-13 15:36:44 +00:00
|
|
|
|
2013-08-28 02:21:34 +00:00
|
|
|
###Building for Android target
|
|
|
|
|
|
|
|
``` sh
|
|
|
|
git clone https://github.com/mozilla/servo.git
|
|
|
|
cd servo
|
|
|
|
mkdir -p build && cd build
|
2014-05-09 02:55:10 +00:00
|
|
|
../configure --target=arm-linux-androideabi --android-cross-path=<Android toolchain path> --android-ndk-path=<Android NDK path> --android-sdk-path=<Android SDK path>
|
2013-08-28 02:21:34 +00:00
|
|
|
make
|
2014-05-09 02:55:10 +00:00
|
|
|
(or make package)
|
|
|
|
|
2013-08-28 02:21:34 +00:00
|
|
|
```
|
|
|
|
|
2013-07-10 17:12:46 +00:00
|
|
|
## 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
|
2013-10-22 20:52:14 +00:00
|
|
|
- `-z` disables all graphical output; useful for running JS / layout tests
|
2013-07-10 17:12:46 +00:00
|
|
|
|
|
|
|
### 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
|
2013-07-16 22:01:15 +00:00
|
|
|
- `Esc` exits servo
|
2013-07-10 17:12:46 +00:00
|
|
|
|
|
|
|
## Developing
|
|
|
|
|
|
|
|
There are lots of make targets you can use:
|
|
|
|
|
|
|
|
- `make clean` - cleans Servo and its dependencies, but not Rust
|
|
|
|
- `make clean-rust` - cleans Rust
|
2014-05-09 02:55:10 +00:00
|
|
|
- `make clean-servo` - only cleans Servo itself (code in `src/components`)
|
2013-07-10 17:12:46 +00:00
|
|
|
- `make clean-DEP` - cleans the dependency `DEP`. e.g. `make clean-rust-opengles`
|
|
|
|
- `make bindings` - generate the Rust WebIDL bindings
|
|
|
|
- `make DEP` - builds only the specified dependency. e.g. `make rust-opengles`
|
|
|
|
- `make check-DEP` - build and run tests for specified dependency
|
2014-05-09 02:55:10 +00:00
|
|
|
- `make package` - build and make app package for specific OS. e.g. apk file of Android
|
2013-07-10 17:12:46 +00:00
|
|
|
|
2014-03-04 22:22:44 +00:00
|
|
|
The `make check-*` targets for running tests are listed [here](https://github.com/mozilla/servo/wiki/Testing)
|