Building Oxide

Oxide uses cmake, although the core library, renderer and setuid sandbox are built with Chromium's build system (gyp + ninja). You don't directly interact with Chromium's build system when building Oxide.

System requirements

Operating system

Currently Oxide has only been tested on Ubuntu, although it should work on other Linux distributions as well. As Chromium is cross-platform, there is no reason why Oxide could not build and work on non-Linux platforms too with some modifications. Whilst it's not a priority for us to make Oxide work on non-Ubuntu systems, we will happily welcome contributions to enable support for other platforms.

Memory space

Oxide embeds Chromium, which means it's big and requires a lot of memory to build - particularly during linking. You will need at least 8GB of RAM for a normal build.

Disk space

The initial checkout requires around 13GB of disk space, and up to 25GB more disk space during the build.

CPU architecture

You will need a 64-bit CPU, operating system and toolchain to compile Oxide.

Building Chromium with a 32-bit toolchain has been unsupported for some time, as the linker exhausts the virtual address space. If you attempt to build Oxide with a 32-bit toolchain, we do take some steps to reduce the amount of memory required by the linker (such as compiling the Blink components without debugging symbols). However, your mileage may vary and you may still struggle to complete a build successfully.

See also LinuxBuildInstructionsPrerequisites

Build prerequisites

The following packages are required to build Oxide on Ubuntu:

To install these, you can just run:

sudo apt-get install cmake gettext qt5-qmake qtchooser qtbase5-dev qtbase5-dev-tools qtdeclarative5-dev qtbase5-private-dev qtdeclarative5-private-dev qtpositioning5-dev qtfeedback5-dev make ninja-build python g++ pkg-config libglib2.0-dev libgtk2.0-dev libgconf2-dev libcups2-dev libexif-dev libgnome-keyring-dev libnss3-dev libpci-dev libgcrypt-dev libdbus-1-dev libudev-dev libpulse-dev libasound2-dev libx11-dev libxi-dev libcap-dev libfontconfig1-dev libfreetype6-dev libpango1.0-dev libxext-dev libxcomposite-dev libxrender-dev libxcursor-dev libxrandr-dev libxtst-dev libxdamage-dev libxfixes-dev libkrb5-dev libssl-dev libgdk-pixbuf2.0-dev libnotify-dev libffi-dev libandroid-properties-dev libhybris-dev python-psutil gperf bison git subversion

See also LinuxBuildInstructionsPrerequisites

Getting the code

Instructions for checking out the code can be found here.

Building

To build, run the following from the checkout directory:

mkdir src/objdir && cd src/objdir && cmake ../ && make

A separate build directory is required for building Oxide - you can call this whatever you like, but the top-level .gitignore will ignore any directory that begins with "objdir".

Build options

Compile time options are passed to cmake using the "-D" option (eg, -DENABLE_TESTS=1). Some notable compile time options are:

Running test cases

You will need to build Oxide with "ENABLE_TESTS=1" in order to run unit tests.

Running unit tests also requires the following additional dependencies:

sudo apt-get install qtdeclarative5-qtquick2-plugin qtdeclarative5-test-plugin python-yaml

To execute unit tests, please run the following from the build directory:

make test

Oxide/BuildInstructions (last edited 2016-10-04 18:03:20 by chrisccoulson)