blob: 2aec2d92454f0a3f22ffa47ef826e42733169a6d [file] [log] [blame] [view]
# MIPS support
starboard/contrib/creator directory contains port of Cobalt for Creator CI20 platform:
https://www.elinux.org/MIPS_Creator_CI20
# Building Cobalt for CI20
Cobalt can be built for CI20 using LLVM toolchain (Clang and lld),
GCC 4.9 and GCC MTI 6.3 toolchains. In all cases sysroot based on Debian is needed.
For building Cobalt with Clang or GCC 4.9, Debian Jessie is used as sysroot,
and for building with GCC MTI 6.3, sysroot is based on Debian Stretch due to
dependance on newer versions of libstdc++. For this reason, Cobalt built with GCC MTI 6.3
toolchain can only be executed on CI20 platform with Debian Stretch or later.
## Sysroot
Directory third_party/ci20 contains script mipsel-toolchain-sysroot-creator.sh,
which will create Debian based sysroot. In addition this script will
also build GCC 4.9 toolchain or download prebuilt GCC MTI 6.3 from https://codescape.mips.com.
In order to create sysroot and toolchain run:
./mipsel-toolchain-sysroot-creator.sh <toolchain>
toolchain argument can be:
clang - Creates sysroot based on Debian Jessie with addition of GCC 4.9 libs
gcc_4-9 - Builds GCC 4.9 toolchain and creates sysroot based on Debian Jessie
gcc_mti_6-3 - Downloads prebuilt MTI GCC 6.3 toolchain and creates sysroot
based on Debian Stretch
Result will be a package:
mipsel_clang_jessie_sysroot.tgz - contains Debian Jessie sysroot, and required GCC libs
mipsel_gcc_4-9_jessie_sysroot.tgz - contains built GCC 4.9 toolchain and Debian Jessie sysroot
mipsel_gcc_mti_6-3_stretch_sysroot.tgz - contains downloaded GCC MTI 6.3 toolchain and Debian Stretch sysroot
Directory where this package is extracted should be exported as CI20_HOME.
export CI20_HOME=<PATH_TO_DIRECTORY_WHERE_PACKAGE_IS_EXTRACTED>
## JavaScript engine
Default configuration for JavaScript engine is V8 with JIT enabled.
Alternative configuration is to use mozjs-45, which has JIT disabled by defualt.
Configuration with mozjs-45 is only available when building Cobalt with Clang.
## Building
Follow all generic instructions from:
http://cobalt.foo/development/setup-linux.html
### Building with Clang
Clang is the default toolchain for building Cobalt for CI20.
Configuration files are located in creator/ci20x11.
Commands for building are:
cobalt/build/gyp_cobalt -C debug creator-ci20x11
ninja -j4 -C out/creator-ci20x11_debug all
cobalt/build/gyp_cobalt -C devel creator-ci20x11
ninja -j4 -C out/creator-ci20x11_devel all
cobalt/build/gyp_cobalt -C qa creator-ci20x11
ninja -j4 -C out/creator-ci20x11_qa cobalt
cobalt/build/gyp_cobalt -C gold creator-ci20x11
ninja -j4 -C out/creator-ci20x11_gold cobalt
Using mozjs-45 JavaScript engine:
cobalt/build/gyp_cobalt -C debug creator-ci20x11-mozjs
ninja -j4 -C out/creator-ci20x11-mozjs_debug all
cobalt/build/gyp_cobalt -C devel creator-ci20x11-mozjs
ninja -j4 -C out/creator-ci20x11-mozjs_devel all
cobalt/build/gyp_cobalt -C qa creator-ci20x11-mozjs
ninja -j4 -C out/creator-ci20x11-mozjs_qa cobalt
cobalt/build/gyp_cobalt -C gold creator-ci20x11-mozjs
ninja -j4 -C out/creator-ci20x11-mozjs_gold cobalt
### Building with GCC 4.9
Configuration files for GCC build are located in creator/ci20x11/gcc/4.9
Commands for building are:
cobalt/build/gyp_cobalt -C debug creator-ci20x11-gcc-4-9
ninja -j4 -C out/creator-ci20x11-gcc-4-9_debug all
cobalt/build/gyp_cobalt -C devel creator-ci20x11-gcc-4-9
ninja -j4 -C out/creator-ci20x11-gcc-4-9_devel all
cobalt/build/gyp_cobalt -C qa creator-ci20x11-gcc-4-9
ninja -j4 -C out/creator-ci20x11-gcc-4-9_qa cobalt
cobalt/build/gyp_cobalt -C gold creator-ci20x11-gcc-4-9
ninja -j4 -C out/creator-ci20x11-gcc-4-9_gold cobalt
### Building with GCC MTI 6.3
Configuration files for GCC build are located in creator/ci20x11/gcc/6.3.mti
Commands for building are:
cobalt/build/gyp_cobalt -C debug creator-ci20x11-gcc-6-3-mti
ninja -j4 -C out/creator-ci20x11-gcc-6-3-mti_debug all
cobalt/build/gyp_cobalt -C devel creator-ci20x11-gcc-6-3-mti
ninja -j4 -C out/creator-ci20x11-gcc-6-3-mti_devel all
cobalt/build/gyp_cobalt -C qa creator-ci20x11-gcc-6-3-mti
ninja -j4 -C out/creator-ci20x11-gcc-6-3-mti_qa cobalt
cobalt/build/gyp_cobalt -C gold creator-ci20x11-gcc-6-3-mti
ninja -j4 -C out/creator-ci20x11-gcc-6-3-mti_gold cobalt
# Running Cobalt on CI20
Cobalt might complain about missing libraries on CI20 platform with stock
Debian rootfs.
To check which libraries are missing, run:
ldd ./cobalt
And install missing libraries using apt-get.
## Pulseaudio
Before running Cobalt on CI20, pulseaudio must be disabled.
a) Global config (all users):
edit /etc/pulse/client.conf
or
b) Local config (single user):
edit ~/.config/pulse/client.conf
Add following new line to client.conf:
autospawn = no
## Starting Cobalt
To start Cobalt on CI20, mount "out" directory on platform and run:
cd out/creator-ci20x11_gold
./cobalt
By default Cobalt will open youtube.com/tv page.
# Notes about performance
## Audio
With pulseaudio disabled, audio on youtube.com/tv is working OK,
with occasional audible artifacts.
## Video
Since CI20 still uses software video decoding, video performance is not good.
Video playback will start, but most of the frames will be dropped.