blob: c22eb339f2923bb2ea00dfdea836df47feb15fd1 [file]
# 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': 'ba427a3dd37a1948aaca5cda75191cc4b88b4fa8',
'effcee_revision': 'f8e8a164822d4f65e757bff66bc00e1567959aa0',
'googletest_revision': '49495eacfdbda3f4b6ba219923fedbb2e3f99376',
# Use a recent protobuf, which can depend on abseil
'protobuf_revision': '35cd01f9fe9afbeea38cc7b979a3b6bfcde82c03',
're2_revision': '972a15cedd008d846f1a39b2e88ce48d7f166cbd',
'spirv_headers_revision': 'f0bf307f7c49d26484db596185cece53c37701fc',
'mimalloc_revision': 'fc1e2acbced0b3e893da1a1375e02ac159d0423f',
# 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',
]