These instructions explain how Linux users set up their Cobalt development environment, fetch a copy of the Cobalt code repository, and build a Cobalt binary. Note that the binary has a graphical client and must be run locally on the machine that you are using to view the client. For example, you cannot SSH into another machine and run the binary on that machine.
Choose where you want to put the
depot_tools
directory, which is used by the Cobalt code. An easy option is to put them in~/depot_tools
. Clone the tools by running the following command:$ cd ~/ $ git clone https://cobalt.googlesource.com/depot_tools
Add your
depot_tools
directory to the end of yourPATH
variable. We recommend adding something like this to your.bashrc
or.profile
file:$ PATH=${PATH}:/path/to/depot_tools
Run the following command to install packages needed to build and run Cobalt on Linux:
$ sudo apt-get install bison build-essential coreutils git gperf \ libasound2-dev libavformat-dev libavresample-dev \ libdirectfb-dev libdirectfb-extra libpulse-dev \ libgl1-mesa-dev libgles2-mesa-dev libx11-dev \ libxcomposite-dev libxcomposite1 libxrender-dev libxrender1 \ libxpm-dev m4 ruby tar xserver-xephyr xz-utils yasm
Install the latest version of the standard C++ header files (
libstdc++
). For example:sudo apt-get install libstdc++-4.8-dev
Clone the Cobalt code repository. The following
git
command creates acobalt
directory that contains the repository:$ git clone https://cobalt.googlesource.com/cobalt
Modify your path to include the version of Clang that is downloaded in the next step of the instructions. The next step will return an error if this version of Clang is not in your path before it runs.
$PATH="/path/to/cobalt/src/third_party/llvm-build/Release+Asserts/bin:${PATH}"
Build the code by navigating to the
src
directory in your newcobalt
directory and running the following command. You must specify a platform when running this command. On goobuntu, the canonical platform islinux-x64x11
.You can also use the
-C
command-line flag to specify abuild_type
. Valid build types aredebug
,devel
,qa
, andgold
. If you specify a build type, the command finishes sooner. Otherwise, all types are built.$ cobalt/build/gyp_cobalt [-C <build_type>] <platform>
Compile the code from the
src/
directory:$ ninja -C out/<platform>_<build_type> <target_name>
The previous command contains three variables:
-
<platform>
is the platform configuration that identifies the platform. As described in the Starboard porting guide, it contains afamily name
(likelinux
) and abinary variant
(likex64x11
), separated by a hyphen. -
<build_type>
is the build you are compiling. Possible values aredebug
,devel
,qa
, andgold
. These values are also described in the Starboard porting guide under the required file modifications for thegyp_configuration.gypi
file. -
<target_name>
is the name assigned to the compiled code and it is used to run the code compiled in this step. The most common names arecobalt
,nplb
, andall
:-
cobalt
builds the Cobalt app. -
nplb
builds Starboard's platform verification test suite to ensure that your platform's code passes all tests for running Cobalt. -
all
builds all targets.
-
For example:
ninja -C out/linux-x64x11_debug cobalt
This command compiles the Cobalt
debug
configuration for thelinux-x64x11
platform and creates a target namedcobalt
that you can then use to run the compiled code.-
Run the compiled code to launch the Cobalt client:
# Note that 'cobalt' was the <target_name> from the previous step. $ out/linux-x64x11_debug/cobalt [--url=<url>]
The flags in the following table are frequently used, and the full set of flags that this command supports are in
cobalt/browser/switches.cc
.Flags allow_http
Indicates that you want to use `http` instead of `https`. ignore_certificate_errors
Indicates that you want to connect to an https
host that doesn't have a certificate that can be validated by our set of root CAs.url
Defines the startup URL that Cobalt will use. If no value is set, then Cobalt uses a default URL. This option lets you point at a different app than the YouTube app.