gecko-dev/servo
Ms2ger 3d051829b7 servo: Merge #3100 - Enable some of the HTML tests; r=jdm (from Ms2ger:tests-html)
Source-Repo: https://github.com/servo/servo
Source-Revision: a081b9a56f8654d4a9796c0ea6b119bf700debeb
2014-08-27 16:26:09 +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 #3153 - Add tests for the bit_struct! macro. r=mbrubeck (from SimonSapin:bit-struct-tests) 2014-08-26 19:58:18 -07:00
src servo: Merge #3153 - Add tests for the bit_struct! macro. r=mbrubeck (from SimonSapin:bit-struct-tests) 2014-08-26 19:58:18 -07: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 #3100 - Enable some of the HTML tests; r=jdm (from Ms2ger:tests-html) 2014-08-27 16:26:09 +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.in servo: Merge #3130 - Remove rust submodule (from SimonSapin:remove-rust-submodule) 2014-08-22 11:28:02 +01:00
README.md servo: Merge #3158 - Correct capitalization of "libXrandr-devel" in Fedora prerequisites list (from sstangl:master) 2014-08-26 15:12:42 -05:00
configure servo: Merge #3148 - Add https support (from glennw:ssl) 2014-08-26 14:26:33 +10:00
rust-snapshot-hash servo: Merge #3130 - Remove rust submodule (from SimonSapin:remove-rust-submodule) 2014-08-22 11:28:02 +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: Make pushing to GitHub Pages verbose. 2014-08-12 16:08:21 +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 #3100 - Enable some of the HTML tests; r=jdm (from Ms2ger:tests-html) 2014-08-27 16:26:09 +02:00

README.md

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

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