[build] Add scripts/prebuilts/swiftshader/build-linux-host-prebuilts.sh

This CL adds several files used to rebuild SwiftShader and the
Vulkan loader from scratch, by:

- build-linux-host-prebuilts.sh: A shell script that will:

    1) Download the right sources from .googlesource.com.
       (with one exception for libbacktrace which is not yet on
       github.googlesource.com).

    2) Build them with CMake and the Fuchsia Linux host toolchain
       and sysroot (to ensure greater portability of the binaries).

    3) Install the necessary files (i.e. Vulkan loader + layers +
       SwiftShader ICD + configuration files)

    4) Generate an `env_vars.sh` file that can be sourced to setup
       environment variables properly to use the new Vulkan driver
       with any program (see --help-usage for full details).

    5) Copy the build configuration file to the installation directory,
       for reference and to allow rebuilding the exact same set of
       binaries in the future if needed (e.g. for debugging).

  Note that the scripts supports a --git-mirror=<SRC_PREFIX>,<DST_PREFIX>
  option to enable redirecting git URLs to alternative mirrors. This
  is useful to avoid downloading directly from github.com if this
  script is run on our infra bots.

- build_config: A small file listing the exact git urls and revisions
  of all source repositories required. Note that this is auto-generated
  and sourced by the build script.

- update-build-config.py: A small Python script to generate a new
  instance of `build_config`, e.g. using new versions of glslang,
  SwiftShader or the Vulkan SDK.

  This handles dependencies' revisions automatically, and simplifies
  future build configuration changes.

See --help and --help-usage for details and usage examples.

Bug: 34950
Test: See --help-usage

Change-Id: Ia7cdbc765ef674f101f4d2345b467f00f0b47d77
3 files changed
tree: 8675d8dd78073c045de1cb5372eadfa5108f9609
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. garnet/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .dir-locals.el
  17. .gitattributes
  18. .gitignore
  19. .gn
  20. .style.yapf
  21. AUTHORS
  22. BUILD.gn
  23. CODE_OF_CONDUCT.md
  24. CONTRIBUTING.md
  25. LICENSE
  26. OWNERS
  27. PATENTS
  28. README.md
  29. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.