gecko-dev/servo
Cameron Zwarich d234ddd3a9 servo: Merge #2881 - CompositorData cleanup (from zwarich:compositor-data-cleanup)
Source-Repo: https://github.com/servo/servo
Source-Revision: d31fde9de8994409e0d2064e2116cf1f06166a33
2014-07-21 10:03:17 -07: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: Improve snapshot storage system for easy bisection. Fix #2694. Fix #2851. 2014-07-16 11:57:48 +02:00
src servo: Merge #2881 - CompositorData cleanup (from zwarich:compositor-data-cleanup) 2014-07-21 10:03:17 -07:00
.gitignore servo: Merge #2538 - Upgrade Rust (from servo:rustup-20140528); r=SimonSapin 2014-06-05 13:58:44 -04:00
.travis.yml servo: Merge #2800 - Enable email notifications from Travis CI (from SimonSapin:travis-email) 2014-07-14 11:18:00 -05:00
configure servo: Improve snapshot storage system for easy bisection. Fix #2694. Fix #2851. 2014-07-16 11:57:48 +02: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 #2812 - Deny unused variables (from Ms2ger:deny-unused-variable) 2014-07-17 07:09:55 -05:00
README.md servo: Merge #2783 - Use "Fedora" instead of "Fedora Core" in README (from molnarg:master) 2014-07-07 15:09:01 -04:00
travis.linux.install.deps.sh servo: Merge #2671 - Update to use snapshot builds (from larsbergstrom:new_snapshots) 2014-06-19 09:43:48 -06:00
travis.linux.script.sh servo: Merge #2806 - Improve and extend tidy.py, and run it on Travis (from Ms2ger:tidy) 2014-07-11 12:57:48 +01:00
travis.osx.install.deps.sh servo: Merge #2671 - Update to use snapshot builds (from larsbergstrom:new_snapshots) 2014-06-19 09:43:48 -06:00
travis.osx.script.sh servo: Merge #2806 - Improve and extend tidy.py, and run it on Travis (from Ms2ger:tidy) 2014-07-11 12:57:48 +01: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

On OS X (MacPorts):

sudo port install autoconf213

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

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
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