blob: 1af41fe1a38420ba1afac4d67b7d93d12ff966a4 [file] [log] [blame]
Austin Engcc2516a2023-10-17 20:57:54 +00001# Copyright 2018 The Dawn & Tint Authors
Corentin Wallez21a23852018-07-31 18:50:03 +02002#
Austin Engcc2516a2023-10-17 20:57:54 +00003# Redistribution and use in source and binary forms, with or without
4# modification, are permitted provided that the following conditions are met:
Corentin Wallez21a23852018-07-31 18:50:03 +02005#
Austin Engcc2516a2023-10-17 20:57:54 +00006# 1. Redistributions of source code must retain the above copyright notice, this
7# list of conditions and the following disclaimer.
Corentin Wallez21a23852018-07-31 18:50:03 +02008#
Austin Engcc2516a2023-10-17 20:57:54 +00009# 2. Redistributions in binary form must reproduce the above copyright notice,
10# this list of conditions and the following disclaimer in the documentation
11# and/or other materials provided with the distribution.
12#
13# 3. Neither the name of the copyright holder nor the names of its
14# contributors may be used to endorse or promote products derived from
15# this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
21# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Corentin Wallez21a23852018-07-31 18:50:03 +020027
danakj4090b7d2023-10-24 17:49:01 +000028import("build/config/rust.gni")
Takuto Ikuta0e6dad02019-02-13 18:42:38 +000029import("scripts/dawn_overrides_with_defaults.gni")
Ben Clayton66630762023-08-18 08:29:51 +000030import("scripts/tint_overrides_with_defaults.gni")
Corentin Wallez48a19232018-12-08 10:35:53 +000031
Antonio Maioranoa945d532025-03-18 12:44:43 -070032import("${dawn_root}/scripts/dawn_features.gni")
33
Kai Ninomiyaf5b5bf72025-01-24 08:10:51 -080034if (!is_clang && is_win) {
35 # libc++ cannot currently build with MSVC. See https://anglebug.com/376074941
36 assert(!use_custom_libcxx, "MSVC build requires use_custom_libcxx=false")
37}
38
Ben Claytond283e952023-10-10 15:30:56 +000039group("benchmarks") {
40 testonly = true
41 deps = [ "src/tint:benchmarks" ]
42}
43
Ben Claytonb7bd8d82023-09-28 14:10:51 +000044group("fuzzers") {
Corentin Wallezb31015b2020-04-10 08:20:10 +000045 testonly = true
46 deps = [
Ben Claytonc6ccd532022-02-04 18:48:05 +000047 "src/dawn/fuzzers",
Ben Claytond283e952023-10-10 15:30:56 +000048 "src/tint:fuzzers",
49 ]
50}
51
52group("libs") {
53 deps = [
54 "src/dawn/native:webgpu_dawn",
55 "src/tint:libs",
56 ]
Antonio Maioranoa945d532025-03-18 12:44:43 -070057 if (dawn_build_node_bindings) {
58 assert(
59 !defined(use_libfuzzer) || !use_libfuzzer,
60 "Building dawn node bindings with use_libfuzzer currently not supported")
61 deps += [ "src/dawn/node:dawn_node" ]
62 }
Ben Claytond283e952023-10-10 15:30:56 +000063}
64
65group("tests") {
66 testonly = true
67 deps = [
68 "src/dawn/tests",
69 "src/tint:tests",
70 ]
71}
72
73group("cmds") {
74 deps = [
75 "src/dawn/samples",
76 "src/tint:cmds",
Ben Claytonb7bd8d82023-09-28 14:10:51 +000077 ]
Austin Eng9dcadd12024-04-23 14:47:43 +000078 if ((target_cpu == "x64" && (is_win || is_linux || is_mac)) ||
79 (target_cpu == "arm64" && is_win)) {
Antonio Maiorano2d123d02023-10-24 15:39:38 +000080 deps += [ "third_party/gn/dxc:dxc" ]
81 }
Ben Claytonb7bd8d82023-09-28 14:10:51 +000082}
83
Jim Blacklerdff37c42024-05-23 22:28:32 +000084group("android") {
85 deps = [ "tools/android" ]
86}
87
Kai Ninomiya11784002024-07-03 19:46:03 +000088group("emdawnwebgpu") {
89 # Without a copy of Emscripten, we can only generate a few files.
90 deps = [
91 "src/emdawnwebgpu:emdawnwebgpu_headers_gen",
92 "src/emdawnwebgpu:emdawnwebgpu_js_gen",
93 ]
94 if (dawn_emscripten_dir != "") {
95 deps += [ "src/emdawnwebgpu:emdawnwebgpu" ]
96 }
97}
98
Ben Claytonb7bd8d82023-09-28 14:10:51 +000099group("all") {
100 testonly = true
101 deps = [
Jim Blacklerdff37c42024-05-23 22:28:32 +0000102 ":android",
Ben Claytond283e952023-10-10 15:30:56 +0000103 ":benchmarks",
Ben Clayton49a564c2023-10-11 16:04:52 +0000104 ":cmds",
Kai Ninomiya11784002024-07-03 19:46:03 +0000105 ":emdawnwebgpu",
Ben Claytonb7bd8d82023-09-28 14:10:51 +0000106 ":fuzzers",
Ben Claytond283e952023-10-10 15:30:56 +0000107 ":libs",
108 ":tests",
Corentin Wallezb31015b2020-04-10 08:20:10 +0000109 ]
Corentin Wallezb31015b2020-04-10 08:20:10 +0000110}
Nicolas Capensdd988bc2021-02-02 17:03:30 +0000111
danakj4090b7d2023-10-24 17:49:01 +0000112if (enable_rust) {
113 group("rust_build_tests") {
114 testonly = true
115 deps = [ "//build/rust/tests" ]
116 }
117}
118
Nicolas Capensdd988bc2021-02-02 17:03:30 +0000119# This target is built when no specific target is specified on the command line.
120group("default") {
121 testonly = true
122 deps = [ ":all" ]
123}
Junji Watanabe42dd5db2025-02-03 22:22:42 -0800124
125# GN evaluates each .gn file once per toolchain, so restricting to default
126# toolchain will ensure write_file() is called only once.
127if (current_toolchain == default_toolchain) {
128 import("//build/gn_logs.gni")
129
130 # Write debug logs to gn_logs.txt.
131 _lines = [
132 "Generated during 'gn gen' by //BUILD.gn.",
133 "",
134 ] + build_gn_logs
135
136 write_file("$root_build_dir/gn_logs.txt", _lines)
137}