gecko-dev/servo
Ms2ger 3e4cec4ec3 servo: Merge #2325 - Use default methods to reduce code duplication for TestBinding (from Ms2ger:testbinding-default); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: b14b2eca372ea91dc40af66b1f8a9cd510c37abf
2014-05-05 15:58:10 -04:00
..
bld servo: Merge #1780 - Build Fontconfig 2.11 in-tree on Linux (from kmcallister:linux-fontconfig); r=kmcallister,metajack 2014-02-28 19:40:38 -05:00
mk servo: Merge #2257 - add start of embedding crate: build system with CEF types (from zmike:embedding-base); r=larsbergstrom 2014-05-01 18:07:48 -04:00
src servo: Merge #2325 - Use default methods to reduce code duplication for TestBinding (from Ms2ger:testbinding-default); r=jdm 2014-05-05 15:58:10 -04:00
.gitignore servo: Merge #2232 - Some minor configure and Makefile cleanup (from metajack:configure-cleanup); r=jdm 2014-04-29 15:07:40 -04:00
CONTRIBUTING.md servo: Merge #1859 - Move content tests to src/test/content for consistency (from kmcallister:move); r=jdm 2014-03-07 19:19:24 -05: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 #2232 - Some minor configure and Makefile cleanup (from metajack:configure-cleanup); r=jdm 2014-04-29 15:07:40 -04:00
Makefile.in servo: Merge #2257 - add start of embedding crate: build system with CEF types (from zmike:embedding-base); r=larsbergstrom 2014-05-01 18:07:48 -04:00
README.md servo: Merge #2171 - Mention automake and cmake (from evilpie:patch-1); r=pcwalton 2014-04-18 21:04:17 -04:00
configure servo: Merge #2101 - Implement a safe, mostly-sound rooting rooting strategy (from jdm:newroot_rebase); r=Ms2ger 2014-05-03 14:25:22 -04: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

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

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

On Debian-based Linuxes (cross-compilation for Android):

sudo apt-get install autoconf2.13 curl libtool ia32-libs

And it needs pre-installed Android tools. 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-triples=arm-linux-androideabi --android-cross-path=<Android toolchain path> --android-ndk-path=<Android NDK path> --android-sdk-path=<Android SDK path>
make

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

The make check-* targets for running tests are listed here