| # Copyright 2026 Google LLC | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # Usage: | |
| # 1. Get Chromium depot_tools, and put it in your path. | |
| # See https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up | |
| # | |
| # 2. From the SPIRV-Tools source tree root: | |
| # | |
| # # Get additional build tooling, using the info in the DEPS file. | |
| # cp utils/standalone.gclient . | |
| # gclient sync --gclientfile=standalone.gclient | |
| # | |
| # 3. One of the tools downloaded in the previous step is the binary for 'gn'. | |
| # Put it on your path. | |
| # | |
| # # This is for Linux amd64 environments: | |
| # PATH=$(pwd)/build/linux64:$PATH | |
| # | |
| # 3. Create a build tree with Ninja build recipes. | |
| # | |
| # gn gen out/Debug | |
| # | |
| # # Or build a release build: | |
| # gn gen out/Release --args="is_debug=false" | |
| # | |
| # 4. Use ninja to build the project | |
| # | |
| # ninja -C out/Debug | |
| use_relative_paths = True | |
| gclient_gn_args_file = 'build/config/gclient_args.gni' | |
| # Emit this vars for use in .gn and .gni files | |
| gclient_gn_args = [ | |
| # Needed by //build/toolchain/linux/BUILD.gn | |
| # which was needed by 'action' in ./BUILD.gn | |
| 'build_with_chromium', | |
| # Needed by //testing/test.gni | |
| 'generate_location_tags', | |
| ] | |
| git_dependencies = 'SYNC' | |
| vars = { | |
| # Repo sources | |
| 'chromium_git': 'https://chromium.googlesource.com', | |
| 'github': 'https://github.com', | |
| 'gitlab': 'ssh://git@gitlab.khronos.org', | |
| # Building context | |
| 'build_with_chromium': False, | |
| 'spirv_tools_standalone': True, | |
| 'generate_location_tags': False, | |
| # Commits for GN-related tooling | |
| 'spirv_tools_gn_version': 'git_revision:ec56d4d935a0e2ab9d52b88dd00c93ec51233055', | |
| 'spirv_tools_build_version': '2316930a88b15a036fa5f72e2b2c2ba08e2904a0', | |
| # Commits for SPIRV-Tools dependencies | |
| 'abseil_revision': 'd522178b54087d2c3855484c1899ce99ad278169', | |
| 'effcee_revision': 'f8e8a164822d4f65e757bff66bc00e1567959aa0', | |
| 'googletest_revision': 'b66cffcd5f5d6ee34a4f96d57bf016d9a22cb023', | |
| # Use a recent protobuf, which can depend on abseil | |
| 'protobuf_revision': '35cd01f9fe9afbeea38cc7b979a3b6bfcde82c03', | |
| 're2_revision': '2da0056814cf180480a19f5cf811e7e1c054bf6d', | |
| 'spirv_headers_revision': '86f980c731e62ae4eaf383d320449d71687936bf', | |
| 'mimalloc_revision': '31d034d94cdb8e22f7d7ed55967f581a2d6e831d', | |
| # SPIRV-Tools standalone GN-only dependencies | |
| 'chromium_testing_version': '555e7546214837372345fef14e25eed42ff2ea07', | |
| } | |
| deps = { | |
| 'external/abseil_cpp': | |
| Var('github') + '/abseil/abseil-cpp.git@' + Var('abseil_revision'), | |
| 'external/effcee': | |
| Var('github') + '/google/effcee.git@' + Var('effcee_revision'), | |
| 'external/googletest': | |
| Var('github') + '/google/googletest.git@' + Var('googletest_revision'), | |
| 'external/protobuf': | |
| Var('github') + '/protocolbuffers/protobuf.git@' + Var('protobuf_revision'), | |
| 'external/re2': | |
| Var('github') + '/google/re2.git@' + Var('re2_revision'), | |
| 'external/spirv-headers': | |
| Var('github') + '/KhronosGroup/SPIRV-Headers.git@' + | |
| Var('spirv_headers_revision'), | |
| 'external/mimalloc': | |
| Var('github') + '/microsoft/mimalloc.git@' + Var('mimalloc_revision'), | |
| # Get buildtools. | |
| # We need the 'gn' binary. | |
| 'buildtools': { | |
| 'url': Var('chromium_git') + '/chromium/src/buildtools@11cc2bd83053cb790b7516aa3eb3f3935fb05a0e', | |
| 'condition': 'spirv_tools_standalone', | |
| }, | |
| 'buildtools/linux64': { | |
| 'packages': [{ | |
| 'package': 'gn/gn/linux-${{arch}}', | |
| 'version': Var('spirv_tools_gn_version'), | |
| }], | |
| 'dep_type': 'cipd', | |
| 'condition': 'spirv_tools_standalone and host_os == "linux"', | |
| }, | |
| 'buildtools/mac': { | |
| 'packages': [{ | |
| 'package': 'gn/gn/mac-${{arch}}', | |
| 'version': Var('spirv_tools_gn_version'), | |
| }], | |
| 'dep_type': 'cipd', | |
| 'condition': 'spirv_tools_standalone and host_os == "mac"', | |
| }, | |
| 'buildtools/win': { | |
| 'packages': [{ | |
| 'package': 'gn/gn/windows-amd64', | |
| 'version': Var('spirv_tools_gn_version'), | |
| }], | |
| 'dep_type': 'cipd', | |
| 'condition': 'spirv_tools_standalone and host_os == "win"', | |
| }, | |
| # Get //build from Chromium. | |
| # It contains the generic //build/config/BUILDCONFIG.gn that sets up most rules | |
| # for C++ compilation. | |
| 'build': { | |
| 'url': Var('chromium_git') + '/chromium/src/build@' + Var('spirv_tools_build_version'), | |
| 'condition': 'spirv_tools_standalone', | |
| }, | |
| # For fuzzing | |
| 'testing': { | |
| 'url': Var('chromium_git') + '/chromium/src/testing@' + Var('chromium_testing_version'), | |
| 'condition': 'spirv_tools_standalone', | |
| }, | |
| } | |
| hooks = [ | |
| # The Chromium BUILDCONFIG.gn has a false dependency on the sysroots. | |
| # Pull the compilers and system libraries for hermetic builds | |
| { | |
| 'name': 'sysroot_x86', | |
| 'pattern': '.', | |
| 'condition': 'spirv_tools_standalone and checkout_linux and checkout_x86', | |
| 'action': ['vpython3', 'build/linux/sysroot_scripts/install-sysroot.py', | |
| '--arch=x86'], | |
| }, | |
| { | |
| 'name': 'sysroot_x64', | |
| 'pattern': '.', | |
| 'condition': 'spirv_tools_standalone and checkout_linux and checkout_x64', | |
| 'action': ['vpython3', 'build/linux/sysroot_scripts/install-sysroot.py', | |
| '--arch=x64'], | |
| }, | |
| ] | |
| recursedeps = [ | |
| 'buildtools', | |
| ] |