# 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', # 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': '3a80a7794c7405b95dfa1f1afa26b37adf817636', 'effcee_revision': 'f8e8a164822d4f65e757bff66bc00e1567959aa0', 'googletest_revision': 'f840327b0f76408eafde2440af3b2f0a70662ea6', # Use a recent protobuf, which can depend on abseil 'protobuf_revision': '35cd01f9fe9afbeea38cc7b979a3b6bfcde82c03', 're2_revision': '972a15cedd008d846f1a39b2e88ce48d7f166cbd', 'spirv_headers_revision': '04fd3caa1e8267e4d95c806cad901181728e1006', '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', ]