87 lines
3.8 KiB
Plaintext
87 lines
3.8 KiB
Plaintext
Chromium recipe
|
|
===============
|
|
|
|
This recipe provides a package for the Chromium web browser. It strives to
|
|
always follow the latest stable Linux release as listed in
|
|
https://omahaproxy.appspot.com
|
|
|
|
We refer to the web browser as Chromium, not Chrome, because "Chrome" is
|
|
Google's version of the web browser with proprietary content on top of the
|
|
open-source Chromium browser.
|
|
|
|
Compared to a usual, smaller recipe, the Chromium recipe has a few
|
|
peculiarities:
|
|
- We manually patch parts of the build system to replace Chromium's bundled
|
|
copies of some packages (flac, libjpeg and others) with system-wide ones.
|
|
- Parts of the V8 (Chromium's JavaScript engine) build need to run binaries
|
|
built for the target, for which we use QEMU.
|
|
|
|
Build requirements
|
|
------------------
|
|
As part of its build process, Chromium builds and runs some binaries on the
|
|
host. As such, as of M62 this means you must have a C++ compiler that is
|
|
capable of building C++11 (preferably C++14) code, which for GCC means at least
|
|
version 5.4.0.
|
|
|
|
Additionally, make sure the machine being used to build Chromium is powerful
|
|
enough: a x86-64 machine with at least 16GB RAM is recommended.
|
|
|
|
PACKAGECONFIG knobs
|
|
-------------------
|
|
* component-build: (off by default)
|
|
Enables component build mode. By default, all of Chromium (with the exception
|
|
of FFmpeg) is linked into one big binary. The linker step requires at least 8
|
|
GB RAM. Component mode was created to facilitate development and testing,
|
|
since with it, there is not one big binary; instead, each component is linked
|
|
to a separate shared object. Use component mode for development, testing, and
|
|
in case the build machine is not a 64-bit one, or has less than 8 GB RAM.
|
|
|
|
* cups: (off by default)
|
|
Enables CUPS support in Chromium, and adds a dependency on the "cups" recipe.
|
|
|
|
* impl-side-painting: (off by default)
|
|
This is a new painting mechanism. Still in development stages, it can improve
|
|
performance See
|
|
http://www.chromium.org/developers/design-documents/impl-side-painting for
|
|
more.
|
|
|
|
* jumbo-build: (off by default)
|
|
Enables what's also known as "unity builds": several source files are merged
|
|
together and compiled only once in order to reduce build times, but may end
|
|
up requiring more memory at certain points.
|
|
|
|
Jumbo builds are documented here:
|
|
https://chromium.googlesource.com/chromium/src/+/master/docs/jumbo.md
|
|
|
|
* kiosk-mode: (off by default)
|
|
Enable this option if you want your browser to start up full-screen, without
|
|
any menu bars, without any clutter, and without any initial start-up
|
|
indicators.
|
|
|
|
* proprietary-codecs: (off by default)
|
|
Enable this option if you want to add support for additional proprietary
|
|
codecs, most notably MPEG standards (h.264, h.265, MP4, MP3, AAC etc). It is
|
|
your responsibility to make sure you are complying with the codecs' licensing
|
|
terms.
|
|
|
|
* use-egl: (on by default)
|
|
Without this packageconfig, the Chromium build will use GLX for creating an
|
|
OpenGL context in X11, and regular OpenGL for painting operations. Neither
|
|
are desirable on embedded platforms. With this packageconfig, EGL and OpenGL
|
|
ES 2.x are used instead.
|
|
|
|
Google API keys
|
|
---------------
|
|
Some Chromium features use Google APIs, and to access those APIs either an API
|
|
Key or a set of OAuth 2.0 tokens is required. Setting up API keys is optional.
|
|
|
|
If you don't do it, the specific APIs using Google services won't work in your
|
|
build, but all other features will run normally.
|
|
|
|
By default, we build Chromium with invalid keys to avoid the "Google API keys
|
|
are missing" error message in the browser's infobar. If you have your own API
|
|
keys, you need to set the GOOGLE_API_KEY, GOOGLE_DEFAULT_CLIENT_ID and
|
|
GOOGLE_DEFAULT_CLIENT_SECRET appropriately in your local.conf.
|
|
|
|
For more information, see https://dev.chromium.org/developers/how-tos/api-keys.
|