The Servo Parallel Browser Project
Servo is a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux.
Servo welcomes contribution from everyone. See
CONTRIBUTING.md
for help getting started.
Prerequisites
On OS X (homebrew):
brew install https://raw.github.com/Homebrew/homebrew-versions/master/autoconf213.rb
brew install automake libtool pkg-config python
pip install virtualenv
On OS X (MacPorts):
sudo port install autoconf213 python27 py27-virtualenv
On Debian-based Linuxes:
sudo apt-get install autoconf2.13 curl freeglut3-dev libtool \
libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \
msttcorefonts gperf g++ automake cmake python-virtualenv
On Fedora:
sudo yum install autoconf213 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
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
Cross-compilation for Android:
Basically, pre-installed Android tools are needed. See wiki for details
Servo builds its own copy of Rust, so there is no need to provide a Rust compiler.
Building
Servo cannot be built in-tree; you must create a directory in which to run configure and make and place the build artifacts.
git clone https://github.com/mozilla/servo.git
cd servo
mkdir -p build && cd build
../configure
make && make check
./servo ../src/test/html/about-mozilla.html
Building for Android target
git clone https://github.com/mozilla/servo.git
cd servo
mkdir -p build && cd build
../configure --target=arm-linux-androideabi --android-cross-path=<Android toolchain path> --android-ndk-path=<Android NDK path> --android-sdk-path=<Android SDK path>
make
(or make package)
Running
Commandline Arguments
-
-p INTERVAL
turns on the profiler and dumps info to the console everyINTERVAL
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 make targets you can use:
-
make clean
- cleans Servo and its dependencies, but not Rust -
make clean-rust
- cleans Rust -
make clean-servo
- only cleans Servo itself (code insrc/components
) -
make clean-DEP
- cleans the dependencyDEP
. 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 -
make package
- build and make app package for specific OS. e.g. apk file of Android
The make check-*
targets for running tests are listed here