# 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) to get started, or go to [servo.org](https://servo.org/) for news and guides. ## 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 SDK (10.0.19041.0)** (`Microsoft.VisualStudio.Component.Windows10SDK.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=` to `mach .