gecko-dev/servo
Martin Robinson 0abf027a0b servo: Merge #2523 - Prevent child layers from overriding root background color (from mrobinson:background-color); r=pcwalton
The first layer implicitly provides the size of the page, but child
layer background colors can still improperly override the body
background color. This commit ensures that layer background colors only
apply to layers with the same id and pipeline id. Additionally the root
layer's unrendered color is defined by the first layer's background
color, just like for size.

Source-Repo: https://github.com/servo/servo
Source-Revision: 68e3fb26a701ae0224f579b66606118eab1eedaf
2014-05-30 17:40:18 -04: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 #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 #2523 - Prevent child layers from overriding root background color (from mrobinson:background-color); r=pcwalton 2014-05-30 17:40:18 -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 #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 #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 #2408 - Add remainder of embedding WIP (from zmike:embedding-invasion); r=jdm 2014-05-26 17:07:15 -04:00
README.md servo: Merge #2376 - update android guide in README.md (from aydinkim:readme); r=larsbergstrom 2014-05-08 22:55:10 -04:00
configure servo: Merge #2358 - Make configure recognize the '-h' option in addition to '--help' (from zwarich:configure-dash-h); r=Ms2ger 2014-05-07 05:29:11 -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

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