gecko-dev/servo
2014-08-08 17:29:25 +02:00
..
bld servo: Merge #2479 - Add LIBRARY_PATH env var to help the linux build slave (from metajack:linux-library-path); r=metajack 2014-05-23 14:37:48 -04:00
mk servo: Merge #3015 - Parallelize test runs (fixes #2980); r=Manishearth+SimonSapin+metajack (from Ms2ger:travis-matrix) 2014-08-08 13:34:36 +02:00
src servo: Merge #2938 - Fix getElementsByTagName[NS] support to match the spec; r=Ms2ger (from jgraham/jgraham:getElementsByTagName) 2014-08-08 17:29:25 +02:00
.gitignore servo: Merge #3015 - Parallelize test runs (fixes #2980); r=Manishearth+SimonSapin+metajack (from Ms2ger:travis-matrix) 2014-08-08 13:34:36 +02:00
.travis.yml servo: Merge #3015 - Parallelize test runs (fixes #2980); r=Manishearth+SimonSapin+metajack (from Ms2ger:travis-matrix) 2014-08-08 13:34:36 +02:00
configure servo: Merge #3036 - Only run configure in the Rust submodule when we actually use it (from servo:no-configure-rust-submodule) 2014-08-06 17:46:31 +01:00
CONTRIBUTING.md servo: Merge #2430 - Add a link to easy bugs (from Manishearth:patch-2); r=SimonSapin 2014-05-14 08:22:17 -04:00
Info.plist servo: Build an app bundle on OS X 2012-04-23 17:43:45 -07:00
LICENSE servo: Add license 2013-04-03 18:37:29 -07:00
Makefile.backup servo: Merge #2648 - Prepare makefile.backup for snashot changes (from Manishearth:makefile.backup); r=jdm 2014-06-13 06:34:56 -04:00
Makefile.in servo: Merge #2934 - Move CanvasRenderTask to gfx crate (from saneyuki:canvas) 2014-08-03 10:48:47 -04:00
README.md servo: Merge #3017 - Fix #2954, add virtualenv installation instructions to osx and linux (from jxs:master) 2014-08-05 14:31:21 +01:00
travis.linux.before_script.sh servo: Merge #3049 - Get rid of fontconfig warnings for linux travis runs (from glennw:fc-warnings) 2014-08-06 22:01:56 -06:00
travis.linux.install.deps.sh servo: Merge #2904 - Modify Linux travis config to run content and cpu ref tests (from glennw:linux-ref-test) 2014-07-24 16:36:49 -05:00
travis.linux.script.sh servo: Change documenation repository URL back to doc.servo.org 2014-08-08 13:27:15 +01:00
travis.osx.before_script.sh servo: Merge #2904 - Modify Linux travis config to run content and cpu ref tests (from glennw:linux-ref-test) 2014-07-24 16:36:49 -05:00
travis.osx.install.deps.sh servo: Merge #2942 - Run web-platform-tests on Travis; r=jgraham+larsberg (from Ms2ger:run-wpt-2) 2014-07-28 23:22:42 +02:00
travis.osx.script.sh servo: Merge #3015 - Parallelize test runs (fixes #2980); r=Manishearth+SimonSapin+metajack (from Ms2ger:travis-matrix) 2014-08-08 13:34:36 +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 \
    freetype-devel mesa-libGL-devel glib2-devel libX11-devel \
    gperf gcc-c++ rpm-build cabextract ttmkfdir python python-virtualenv
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 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