Skip to content

[CFP] Building, Testing, and Distributing Chromium's C++ Toolchain #10

@zmodem

Description

@zmodem

Title

Building, Testing, and Distributing Chromium's C++ Toolchain

Author

Hans Wennborg, [email protected], Google

Distribution

Chromium's C++ toolchain, used to build Chromium and Chromium-derived web browsers.

Abstract (optional)

Chromium uses an LLVM-based C++ toolchain to build the browser for all its supported platforms. This talk covers how we build the toolchain for best performance, test it to be confident it works, and distribute it to all our developers and infrastructure. In particular, it covers how we manage to stay so close to the HEAD revision.

What's unique about the environment you package LLVM for? (optional)

What makes your distribution of LLVM unique? (optional)

  • Many host and target platforms: Windows, Mac, Linux, Android, iOS, Fuchsia

  • Living at HEAD: rigorous CI, shipping a new toolchain semi-weekly, no local patches, your LLVM commit can be used to build tomorrow's shipping canary version of the browser

  • Not a general-purpose toolchain release: building Chromium is the supported use case

  • Lots of upstream contributions to support our needs: clang-cl, the new lld; and things which are possible when controlling the whole toolchain such as constructor type homing, global type hashing for PDBs, etc.

What might others learn from your experience? (optional)

What could be improved in upstream LLVM to make working with it easier as a downstream packager? (optional)

Anything that makes the HEAD revision more stable.


Reminder that this is meant to be a 15 minute lightning talk; enough to pique
interests but follow up should be done after. Slides can always include links
to more info; we will ask that you send a PR to this repo with your slides when
they are ready.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions