The Servo Browser Engine
Find a file
Ms2ger 0d202b6bda Merge pull request #3226 from Ms2ger/3209-disable
Disable intermittently failing Document-characterSet-normalization.html (fixes #3209); r=jdm
2014-09-07 00:13:25 +02:00
bld Add LIBRARY_PATH env var to help the linux build slave. 2014-05-23 12:34:53 -06:00
mk Revert "Add tests for the bit_struct! macro." 2014-09-02 07:57:57 +10:00
src Merge pull request #3226 from Ms2ger/3209-disable 2014-09-07 00:13:25 +02:00
.gitignore Parallelize test runs on Travis (fixes #2980). 2014-08-08 10:46:20 +02:00
.gitmodules Remove old submodule 2014-09-05 19:21:56 +05:30
.travis.yml Renew the auth token for pushing to github pages 2014-08-27 19:48:41 +01:00
configure Unify fontconfig source code so that one branch builds on both linux + android. 2014-09-04 07:21:41 +10:00
CONTRIBUTING.md Add a link to easy bugs 2014-05-14 17:36:38 +05:30
Info.plist Build an app bundle on OS X 2012-04-23 17:43:45 -07:00
LICENSE Add license 2013-04-03 18:37:29 -07:00
Makefile.in Move most of Makefile.in to mk/main.mk 2014-08-21 15:49:48 +01:00
README.md Add a note about autoconf 2.13. 2014-09-06 13:00:33 +02:00
rust-snapshot-hash Move rust-snapshot-hash to the root. 2014-08-22 09:49:45 +01:00
travis.linux.before_script.sh Get rid of fontconfig warnings for linux travis runs. 2014-08-07 13:32:18 +10:00
travis.linux.install.deps.sh Modify Linux travis config to run content and cpu ref tests. 2014-07-24 10:57:33 +10:00
travis.linux.script.sh Don’t show the githib token in Travis log 2014-08-27 19:51:19 +01:00
travis.osx.before_script.sh Modify Linux travis config to run content and cpu ref tests. 2014-07-24 10:57:33 +10:00
travis.osx.install.deps.sh Run wpt on Travis. 2014-07-28 22:24:15 +02:00
travis.osx.script.sh Split up web-platform-tests on Travis. 2014-08-27 16:24:12 +02:00

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

On Arch Linux:

sudo pacman -S base-devel autoconf2.13 git gperf python2 \
    python2-virtualenv mesa libxrandr libxi libgl glu ttf-font

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.

Cross-compilation for Android:

Basically, pre-installed Android tools are needed. See wiki for details

The Rust compiler

Servo builds its own copy of Rust, so there is no need to provide a Rust compiler. If you'd like to know the snapshot revision of Rust which we use, see ./rust-snapshot-hash.

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 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 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 in src/components)
  • 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
  • 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