| # The Servo Parallel Browser Engine Project |
| |
| Servo is a prototype web browser engine written in the |
| [Rust](https://github.com/rust-lang/rust) language. It is currently developed on |
| 64-bit macOS, 64-bit Linux, 64-bit Windows, 64-bit OpenHarmony, and Android. |
| |
| Servo welcomes contribution from everyone. Check out: |
| |
| - The [Servo Book](https://book.servo.org) for documentation |
| - [servo.org](https://servo.org/) for news and guides |
| |
| Coordination of Servo development happens: |
| - Here in the Github Issues |
| - On the [Servo Zulip](https://servo.zulipchat.com/) |
| - In video calls advertised in the [Servo Project](https://github.com/servo/project/issues) repo. |
| |
| ## Getting started |
| |
| For more detailed build instructions, see the Servo book under [Setting up your environment], [Building Servo], [Building for Android] and [Building for OpenHarmony]. |
| |
| [Setting up your environment]: https://book.servo.org/hacking/setting-up-your-environment.html |
| [Building Servo]: https://book.servo.org/hacking/building-servo.html |
| [Building for Android]: https://book.servo.org/hacking/building-for-android.html |
| [Building for OpenHarmony]: https://book.servo.org/hacking/building-for-openharmony.html |
| |
| ### macOS |
| |
| - Download and install [Xcode](https://developer.apple.com/xcode/) and [`brew`](https://brew.sh/). |
| - Install `uv`: `curl -LsSf https://astral.sh/uv/install.sh | sh` |
| - Install `rustup`: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` |
| - Restart your shell to make sure `cargo` is available |
| - Install the other dependencies: `./mach bootstrap` |
| - Build servoshell: `./mach build` |
| |
| ### Linux |
| |
| - Install `curl`: |
| - Arch: `sudo pacman -S --needed curl` |
| - Debian, Ubuntu: `sudo apt install curl` |
| - Fedora: `sudo dnf install curl` |
| - Gentoo: `sudo emerge net-misc/curl` |
| - Install `uv`: `curl -LsSf https://astral.sh/uv/install.sh | sh` |
| - Install `rustup`: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` |
| - Restart your shell to make sure `cargo` is available |
| - Install the other dependencies: `./mach bootstrap` |
| - Build servoshell: `./mach build` |
| |
| ### Windows |
| |
| - Download [`uv`](https://docs.astral.sh/uv/getting-started/installation/#standalone-installer), [`choco`](https://chocolatey.org/install#individual), and [`rustup`](https://win.rustup.rs/) |
| - Be sure to select *Quick install via the Visual Studio Community installer* |
| - In the Visual Studio Installer, ensure the following components are installed: |
| - **Windows 10/11 SDK (anything >= 10.0.19041.0)** (`Microsoft.VisualStudio.Component.Windows{10, 11}SDK.{>=19041}`) |
| - **MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)** (`Microsoft.VisualStudio.Component.VC.Tools.x86.x64`) |
| - **C++ ATL for latest v143 build tools (x86 & x64)** (`Microsoft.VisualStudio.Component.VC.ATL`) |
| - **C++ MFC for latest v143 build tools (x86 & x64)** (`Microsoft.VisualStudio.Component.VC.ATLMFC`) |
| - Restart your shell to make sure `cargo` is available |
| - Install the other dependencies: `.\mach bootstrap` |
| - Build servoshell: `.\mach build` |
| |
| ### Android |
| |
| - Ensure that the following environment variables are set: |
| - `ANDROID_SDK_ROOT` |
| - `ANDROID_NDK_ROOT`: `$ANDROID_SDK_ROOT/ndk/26.2.11394342/` |
| `ANDROID_SDK_ROOT` can be any directory (such as `~/android-sdk`). |
| All of the Android build dependencies will be installed there. |
| - Install the latest version of the [Android command-line |
| tools](https://developer.android.com/studio#command-tools) to |
| `$ANDROID_SDK_ROOT/cmdline-tools/latest`. |
| - Run the following command to install the necessary components: |
| ```shell |
| sudo $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install \ |
| "build-tools;34.0.0" \ |
| "emulator" \ |
| "ndk;26.2.11394342" \ |
| "platform-tools" \ |
| "platforms;android-33" \ |
| "system-images;android-33;google_apis;x86_64" |
| ``` |
| - Follow the instructions above for the platform you are building on |
| |
| ### OpenHarmony |
| |
| - Follow the instructions above for the platform you are building on to prepare the environment. |
| - Depending on the target distribution (e.g. `HarmonyOS NEXT` vs pure `OpenHarmony`) the build configuration will differ slightly. |
| - Ensure that the following environment variables are set |
| - `DEVECO_SDK_HOME` (Required when targeting `HarmonyOS NEXT`) |
| - `OHOS_BASE_SDK_HOME` (Required when targeting `OpenHarmony`) |
| - `OHOS_SDK_NATIVE` (e.g. `${DEVECO_SDK_HOME}/default/openharmony/native` or `${OHOS_BASE_SDK_HOME}/${API_VERSION}/native`) |
| - `SERVO_OHOS_SIGNING_CONFIG`: Path to json file containing a valid signing configuration for the demo app. |
| - Review the detailed instructions at [Building for OpenHarmony]. |
| - The target distribution can be modified by passing `--flavor=<default|harmonyos>` to `mach <build|package|install>`. |