xref: /aosp_15_r20/external/skia/bazel/exporter_tool/main.go (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker// Copyright 2022 Google LLC
2*c8dee2aaSAndroid Build Coastguard Worker//
3*c8dee2aaSAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be
4*c8dee2aaSAndroid Build Coastguard Worker// found in the LICENSE file.
5*c8dee2aaSAndroid Build Coastguard Worker
6*c8dee2aaSAndroid Build Coastguard Workerpackage main
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard Workerimport (
9*c8dee2aaSAndroid Build Coastguard Worker	"flag"
10*c8dee2aaSAndroid Build Coastguard Worker	"fmt"
11*c8dee2aaSAndroid Build Coastguard Worker	"os"
12*c8dee2aaSAndroid Build Coastguard Worker	"runtime/pprof"
13*c8dee2aaSAndroid Build Coastguard Worker
14*c8dee2aaSAndroid Build Coastguard Worker	"go.skia.org/infra/go/common"
15*c8dee2aaSAndroid Build Coastguard Worker	"go.skia.org/infra/go/skerr"
16*c8dee2aaSAndroid Build Coastguard Worker	"go.skia.org/skia/bazel/exporter"
17*c8dee2aaSAndroid Build Coastguard Worker	"go.skia.org/skia/bazel/exporter/interfaces"
18*c8dee2aaSAndroid Build Coastguard Worker)
19*c8dee2aaSAndroid Build Coastguard Worker
20*c8dee2aaSAndroid Build Coastguard Workervar gniExportDescs = []exporter.GNIExportDesc{
21*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/codec.gni", Vars: []exporter.GNIFileListExportDesc{
22*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_public",
23*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
24*c8dee2aaSAndroid Build Coastguard Worker				"//include/codec:any_codec_hdrs",
25*c8dee2aaSAndroid Build Coastguard Worker				"//include/codec:core_hdrs",
26*c8dee2aaSAndroid Build Coastguard Worker			},
27*c8dee2aaSAndroid Build Coastguard Worker		},
28*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_shared",
29*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
30*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:any_decoder",
31*c8dee2aaSAndroid Build Coastguard Worker				"//include/codec:any_codec_hdrs",
32*c8dee2aaSAndroid Build Coastguard Worker			},
33*c8dee2aaSAndroid Build Coastguard Worker		},
34*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_decode_bmp",
35*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
36*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:bmp_decode",
37*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:wbmp_decode",
38*c8dee2aaSAndroid Build Coastguard Worker			},
39*c8dee2aaSAndroid Build Coastguard Worker		},
40*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_xmp",
41*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
42*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:xmp_srcs",
43*c8dee2aaSAndroid Build Coastguard Worker			},
44*c8dee2aaSAndroid Build Coastguard Worker		},
45*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_jpeg_xmp",
46*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
47*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:jpeg_xmp_hdrs",
48*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:jpeg_xmp_srcs",
49*c8dee2aaSAndroid Build Coastguard Worker			},
50*c8dee2aaSAndroid Build Coastguard Worker		},
51*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_png_base",
52*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
53*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:png_codec_base_hdrs",
54*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:png_codec_base_srcs",
55*c8dee2aaSAndroid Build Coastguard Worker			},
56*c8dee2aaSAndroid Build Coastguard Worker		},
57*c8dee2aaSAndroid Build Coastguard Worker		// TODO(https://crbug.com/381900683): Replace this with more granular lists.
58*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_png",
59*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
60*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:buffet_png_srcs",
61*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:common_png_srcs",
62*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:png_codec_base_hdrs",
63*c8dee2aaSAndroid Build Coastguard Worker				"//src/codec:png_codec_base_srcs",
64*c8dee2aaSAndroid Build Coastguard Worker			},
65*c8dee2aaSAndroid Build Coastguard Worker		},
66*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_rust_png_public",
67*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
68*c8dee2aaSAndroid Build Coastguard Worker				"//experimental/rust_png/decoder:hdrs",
69*c8dee2aaSAndroid Build Coastguard Worker			},
70*c8dee2aaSAndroid Build Coastguard Worker		},
71*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_rust_png",
72*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
73*c8dee2aaSAndroid Build Coastguard Worker				"//experimental/rust_png/decoder:srcs",
74*c8dee2aaSAndroid Build Coastguard Worker				"//experimental/rust_png/ffi:utils",
75*c8dee2aaSAndroid Build Coastguard Worker			},
76*c8dee2aaSAndroid Build Coastguard Worker		},
77*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_rust_png_ffi_rs_srcs",
78*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
79*c8dee2aaSAndroid Build Coastguard Worker				"//experimental/rust_png/ffi:rs_srcs",
80*c8dee2aaSAndroid Build Coastguard Worker			},
81*c8dee2aaSAndroid Build Coastguard Worker		},
82*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_rust_png_ffi_cxx_bridge_srcs",
83*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
84*c8dee2aaSAndroid Build Coastguard Worker				"//experimental/rust_png/ffi:cxx_bridge_srcs",
85*c8dee2aaSAndroid Build Coastguard Worker			},
86*c8dee2aaSAndroid Build Coastguard Worker		},
87*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_codec_rust_png_ffi_cpp_hdrs",
88*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
89*c8dee2aaSAndroid Build Coastguard Worker				"//experimental/rust_png/ffi:ffi_cpp",
90*c8dee2aaSAndroid Build Coastguard Worker			},
91*c8dee2aaSAndroid Build Coastguard Worker		},
92*c8dee2aaSAndroid Build Coastguard Worker	}},
93*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/core.gni", Vars: []exporter.GNIFileListExportDesc{
94*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_core_public",
95*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
96*c8dee2aaSAndroid Build Coastguard Worker				"//include/core:core_hdrs",
97*c8dee2aaSAndroid Build Coastguard Worker			}},
98*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_core_sources",
99*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
100*c8dee2aaSAndroid Build Coastguard Worker				"//include/private:core_priv_hdrs",
101*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/base:private_hdrs",
102*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/base:shared_gpu_private_hdrs",
103*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/chromium:core_hdrs",
104*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/chromium:shared_private_hdrs",
105*c8dee2aaSAndroid Build Coastguard Worker				"//src/base:private_hdrs",
106*c8dee2aaSAndroid Build Coastguard Worker				"//src/base:skslc_srcs",
107*c8dee2aaSAndroid Build Coastguard Worker				"//src/base:srcs",
108*c8dee2aaSAndroid Build Coastguard Worker				"//src/core:core_priv_hdrs",
109*c8dee2aaSAndroid Build Coastguard Worker				"//src/core:core_priv_srcs",
110*c8dee2aaSAndroid Build Coastguard Worker				"//src/core:core_srcs",
111*c8dee2aaSAndroid Build Coastguard Worker				"//src/core:textual_hdrs",
112*c8dee2aaSAndroid Build Coastguard Worker				"//src/image:image_hdrs",
113*c8dee2aaSAndroid Build Coastguard Worker				"//src/image:image_srcs",
114*c8dee2aaSAndroid Build Coastguard Worker				"//src/lazy:lazy_hdrs",
115*c8dee2aaSAndroid Build Coastguard Worker				"//src/lazy:lazy_srcs",
116*c8dee2aaSAndroid Build Coastguard Worker				"//src/opts:textual_hdrs",
117*c8dee2aaSAndroid Build Coastguard Worker				"//src/shaders:shader_hdrs",
118*c8dee2aaSAndroid Build Coastguard Worker				"//src/shaders:shader_srcs",
119*c8dee2aaSAndroid Build Coastguard Worker				"//src/text:text_hdrs",
120*c8dee2aaSAndroid Build Coastguard Worker				"//src/text:text_srcs",
121*c8dee2aaSAndroid Build Coastguard Worker			}},
122*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_pathops_public",
123*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//include/pathops:public_hdrs"}},
124*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_pathops_sources",
125*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
126*c8dee2aaSAndroid Build Coastguard Worker				"//src/pathops:_pathops_hdrs",
127*c8dee2aaSAndroid Build Coastguard Worker				"//src/pathops:_pathops_srcs",
128*c8dee2aaSAndroid Build Coastguard Worker			}},
129*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_public",
130*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//include/encode:encode_hdrs"}},
131*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_srcs",
132*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
133*c8dee2aaSAndroid Build Coastguard Worker				"//src/encode:encoder_common",
134*c8dee2aaSAndroid Build Coastguard Worker				"//src/encode:icc_support",
135*c8dee2aaSAndroid Build Coastguard Worker			}},
136*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_jpeg_public",
137*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//include/encode:jpeg_hdrs"}},
138*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_jpeg_srcs",
139*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//src/encode:jpeg_encode_srcs",
140*c8dee2aaSAndroid Build Coastguard Worker				"//src/encode:jpeg_encode_hdrs"}},
141*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_rust_png_public",
142*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//experimental/rust_png/encoder:hdrs"}},
143*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_rust_png_srcs",
144*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
145*c8dee2aaSAndroid Build Coastguard Worker				"//experimental/rust_png/encoder:srcs",
146*c8dee2aaSAndroid Build Coastguard Worker				"//experimental/rust_png/ffi:utils",
147*c8dee2aaSAndroid Build Coastguard Worker			}},
148*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_png_base",
149*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
150*c8dee2aaSAndroid Build Coastguard Worker				"//src/encode:png_encode_base_srcs",
151*c8dee2aaSAndroid Build Coastguard Worker				"//src/encode:png_encode_base_hdrs",
152*c8dee2aaSAndroid Build Coastguard Worker			}},
153*c8dee2aaSAndroid Build Coastguard Worker		// TODO(https://crbug.com/381900683): Rename this list.
154*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_png_public",
155*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//include/encode:png_hdrs"}},
156*c8dee2aaSAndroid Build Coastguard Worker		// TODO(https://crbug.com/381900683): Replace this with more granular lists.
157*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_png_srcs",
158*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
159*c8dee2aaSAndroid Build Coastguard Worker				"//src/encode:png_encode_base_srcs",
160*c8dee2aaSAndroid Build Coastguard Worker				"//src/encode:png_encode_base_hdrs",
161*c8dee2aaSAndroid Build Coastguard Worker				"//src/encode:png_encode_srcs",
162*c8dee2aaSAndroid Build Coastguard Worker				"//src/encode:png_encode_hdrs",
163*c8dee2aaSAndroid Build Coastguard Worker			}},
164*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_webp_public",
165*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//include/encode:webp_hdrs"}},
166*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_encode_webp_srcs",
167*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//src/encode:webp_encode_srcs"}},
168*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_no_encode_jpeg_srcs",
169*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//src/encode:no_jpeg_encode_srcs"}},
170*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_no_encode_png_srcs",
171*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//src/encode:no_png_encode_srcs"}},
172*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_no_encode_webp_srcs",
173*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//src/encode:no_webp_encode_srcs"}},
174*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_discardable_memory_chromium",
175*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//include/private/chromium:discardable_memory_hdrs"}},
176*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_no_slug_srcs",
177*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{}},
178*c8dee2aaSAndroid Build Coastguard Worker	},
179*c8dee2aaSAndroid Build Coastguard Worker	},
180*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/effects.gni", Vars: []exporter.GNIFileListExportDesc{
181*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_effects_public",
182*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
183*c8dee2aaSAndroid Build Coastguard Worker				"//include/effects:core_hdrs",
184*c8dee2aaSAndroid Build Coastguard Worker			}},
185*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_effects_sources",
186*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
187*c8dee2aaSAndroid Build Coastguard Worker				"//src/effects:effects_hdrs",
188*c8dee2aaSAndroid Build Coastguard Worker				"//src/effects:effects_srcs",
189*c8dee2aaSAndroid Build Coastguard Worker				"//src/shaders/gradients:gradient_hdrs",
190*c8dee2aaSAndroid Build Coastguard Worker				"//src/shaders/gradients:gradient_srcs",
191*c8dee2aaSAndroid Build Coastguard Worker			}},
192*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_colorfilters_sources",
193*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
194*c8dee2aaSAndroid Build Coastguard Worker				"//src/effects/colorfilters:colorfilter_srcs",
195*c8dee2aaSAndroid Build Coastguard Worker				"//src/effects/colorfilters:colorfilter_hdrs",
196*c8dee2aaSAndroid Build Coastguard Worker			}},
197*c8dee2aaSAndroid Build Coastguard Worker	}},
198*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/effects_imagefilters.gni", Vars: []exporter.GNIFileListExportDesc{
199*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_effects_imagefilter_public",
200*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
201*c8dee2aaSAndroid Build Coastguard Worker				"//include/effects:public_imagefilters_hdrs",
202*c8dee2aaSAndroid Build Coastguard Worker			}},
203*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_effects_imagefilter_sources",
204*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
205*c8dee2aaSAndroid Build Coastguard Worker				"//src/effects/imagefilters:srcs",
206*c8dee2aaSAndroid Build Coastguard Worker			}}},
207*c8dee2aaSAndroid Build Coastguard Worker	},
208*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/ports.gni", Vars: []exporter.GNIFileListExportDesc{
209*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_sources",
210*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
211*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:global_init",
212*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:osfile",
213*c8dee2aaSAndroid Build Coastguard Worker			}},
214*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_freetype_sources",
215*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
216*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:freetype_support",
217*c8dee2aaSAndroid Build Coastguard Worker			}},
218*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_android_public",
219*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
220*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:android_fontmgr_hdrs",
221*c8dee2aaSAndroid Build Coastguard Worker			}},
222*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_android_sources",
223*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
224*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_android_freetype",
225*c8dee2aaSAndroid Build Coastguard Worker			}},
226*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_android_ndk_public",
227*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
228*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:android_ndk_fontmgr_hdrs",
229*c8dee2aaSAndroid Build Coastguard Worker			}},
230*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_android_ndk_sources",
231*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
232*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_android_ndk_freetype",
233*c8dee2aaSAndroid Build Coastguard Worker			}},
234*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_custom_sources",
235*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
236*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_custom",
237*c8dee2aaSAndroid Build Coastguard Worker			}},
238*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_coretext_public",
239*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
240*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:mac_typeface",
241*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:coretext_fontmgr_hdrs",
242*c8dee2aaSAndroid Build Coastguard Worker			}},
243*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_coretext_sources",
244*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
245*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_coretext",
246*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:typeface_mac_srcs",
247*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:typeface_mac_hdrs",
248*c8dee2aaSAndroid Build Coastguard Worker			}},
249*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_directory_public",
250*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
251*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:directory_fontmgr_hdrs",
252*c8dee2aaSAndroid Build Coastguard Worker			}},
253*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_directory_sources",
254*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
255*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_directory_freetype",
256*c8dee2aaSAndroid Build Coastguard Worker			}},
257*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_embedded_public",
258*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
259*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:data_fontmgr_hdrs",
260*c8dee2aaSAndroid Build Coastguard Worker			}},
261*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_embedded_sources",
262*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
263*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_data_freetype",
264*c8dee2aaSAndroid Build Coastguard Worker			}},
265*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_empty_public",
266*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
267*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:empty_fontmgr_hdrs",
268*c8dee2aaSAndroid Build Coastguard Worker			}},
269*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_empty_sources",
270*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
271*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_empty_freetype",
272*c8dee2aaSAndroid Build Coastguard Worker			}},
273*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_fontconfig_public",
274*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
275*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:fontconfig_fontmgr_hdrs",
276*c8dee2aaSAndroid Build Coastguard Worker			}},
277*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_fontconfig_sources",
278*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
279*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_fontconfig_freetype",
280*c8dee2aaSAndroid Build Coastguard Worker			}},
281*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_fontations_public",
282*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
283*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:fontmgr_fontations_hdrs",
284*c8dee2aaSAndroid Build Coastguard Worker			}},
285*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_fontations_sources",
286*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
287*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_fontations_empty_srcs",
288*c8dee2aaSAndroid Build Coastguard Worker			}},
289*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_fuchsia_public",
290*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
291*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:fuchsia_fontmgr_hdrs",
292*c8dee2aaSAndroid Build Coastguard Worker			}},
293*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fontmgr_fuchsia_sources",
294*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
295*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontmgr_fuchsia_srcs",
296*c8dee2aaSAndroid Build Coastguard Worker			}},
297*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_typeface_fontations_sources",
298*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
299*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:typeface_fontations_hdrs",
300*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:typeface_fontations_srcs",
301*c8dee2aaSAndroid Build Coastguard Worker			}},
302*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_typeface_proxy_sources",
303*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
304*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:typeface_proxy_hdrs",
305*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:typeface_proxy_srcs",
306*c8dee2aaSAndroid Build Coastguard Worker			}},
307*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_windows_sources",
308*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
309*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:osfile_win",
310*c8dee2aaSAndroid Build Coastguard Worker			}},
311*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_windows_fonts_public",
312*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
313*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:typeface_windows_hdrs",
314*c8dee2aaSAndroid Build Coastguard Worker			}},
315*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_windows_fonts_sources",
316*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
317*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:windows_fonts_srcs",
318*c8dee2aaSAndroid Build Coastguard Worker			}},
319*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fci_public",
320*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
321*c8dee2aaSAndroid Build Coastguard Worker				"//include/ports:fci_fontmgr_hdrs",
322*c8dee2aaSAndroid Build Coastguard Worker			}},
323*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fci_sources",
324*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
325*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fontconfig_interface_srcs",
326*c8dee2aaSAndroid Build Coastguard Worker			}},
327*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ports_fonthost_win_sources",
328*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
329*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:fonthost_win_srcs",
330*c8dee2aaSAndroid Build Coastguard Worker			}},
331*c8dee2aaSAndroid Build Coastguard Worker	}},
332*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/pdf.gni", Vars: []exporter.GNIFileListExportDesc{
333*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_pdf_public",
334*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//include/docs:pdf_hdrs"}},
335*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_pdf_sources",
336*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
337*c8dee2aaSAndroid Build Coastguard Worker				"//src/pdf:_pdf_hdrs",
338*c8dee2aaSAndroid Build Coastguard Worker				"//src/pdf:_pdf_srcs",
339*c8dee2aaSAndroid Build Coastguard Worker			}},
340*c8dee2aaSAndroid Build Coastguard Worker	}},
341*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/sksl.gni", Vars: []exporter.GNIFileListExportDesc{
342*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksl_core_sources",
343*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
344*c8dee2aaSAndroid Build Coastguard Worker				"//include/sksl:core_hdrs",
345*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/analysis:analysis_hdrs",
346*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/analysis:analysis_srcs",
347*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:rasterpipeline_hdrs",
348*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:rasterpipeline_srcs",
349*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/ir:ir_hdrs",
350*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/ir:ir_srcs",
351*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/tracing:private_hdrs",
352*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/tracing:skopts_hdrs",
353*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/tracing:srcs",
354*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/transform:transform_hdrs",
355*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/transform:transform_srcs",
356*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl:sksl_hdrs",
357*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl:sksl_srcs",
358*c8dee2aaSAndroid Build Coastguard Worker			}},
359*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksl_core_module_sources",
360*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
361*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl:sksl_default_module_srcs",
362*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl:sksl_graphite_modules_hdrs",
363*c8dee2aaSAndroid Build Coastguard Worker			}},
364*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksl_graphite_modules_sources",
365*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
366*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl:sksl_graphite_modules_srcs",
367*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl:sksl_graphite_modules_hdrs",
368*c8dee2aaSAndroid Build Coastguard Worker			}},
369*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksl_tracing_sources",
370*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
371*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/tracing:enabled_hdrs",
372*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/tracing:enabled_srcs",
373*c8dee2aaSAndroid Build Coastguard Worker			}},
374*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksl_pipeline_sources",
375*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
376*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:gpu",
377*c8dee2aaSAndroid Build Coastguard Worker			}},
378*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksl_codegen_sources",
379*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
380*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:codegen_shared_exported",
381*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:codegen_shared_priv",
382*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:glsl",
383*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:metal",
384*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:spirv",
385*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:wgsl",
386*c8dee2aaSAndroid Build Coastguard Worker			}},
387*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksl_hlsl_sources",
388*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
389*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:hlsl",
390*c8dee2aaSAndroid Build Coastguard Worker			}},
391*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksl_validate_spirv_sources",
392*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
393*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:spirv_validator",
394*c8dee2aaSAndroid Build Coastguard Worker			}},
395*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksl_validate_wgsl_sources",
396*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
397*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl/codegen:wgsl_validator",
398*c8dee2aaSAndroid Build Coastguard Worker			}},
399*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skslc_deps",
400*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
401*c8dee2aaSAndroid Build Coastguard Worker				"//src/base:skslc_srcs",
402*c8dee2aaSAndroid Build Coastguard Worker				"//src/core:core_skslc_hdrs",
403*c8dee2aaSAndroid Build Coastguard Worker				"//src/core:core_skslc_srcs",
404*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh:core_skslc_hdrs",
405*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh:core_skslc_srcs",
406*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:malloc",
407*c8dee2aaSAndroid Build Coastguard Worker				"//src/ports:osfile",
408*c8dee2aaSAndroid Build Coastguard Worker				"//src/sksl:sksl_skslc_module_srcs",
409*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:utils_skslc_hdrs",
410*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:utils_skslc_srcs",
411*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:json_srcs",
412*c8dee2aaSAndroid Build Coastguard Worker			}}},
413*c8dee2aaSAndroid Build Coastguard Worker	},
414*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/sksl_tests.gni", Vars: []exporter.GNIFileListExportDesc{
415*c8dee2aaSAndroid Build Coastguard Worker		// This order was the order the original file was in. It could be alphabetized if we like.
416*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_error_tests", Rules: []string{"//resources/sksl:sksl_error_tests"}},
417*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_glsl_tests", Rules: []string{"//resources/sksl:sksl_glsl_tests"}},
418*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_mesh_tests", Rules: []string{"//resources/sksl:sksl_mesh_tests"}},
419*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_mesh_error_tests", Rules: []string{"//resources/sksl:sksl_mesh_error_tests"}},
420*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_metal_tests", Rules: []string{"//resources/sksl:sksl_metal_tests"}},
421*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_spirv_tests", Rules: []string{"//resources/sksl:sksl_spirv_tests"}},
422*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_wgsl_tests", Rules: []string{"//resources/sksl:sksl_wgsl_tests"}},
423*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_shared_tests", Rules: []string{"//resources/sksl:sksl_shared_tests"}},
424*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_compute_tests", Rules: []string{"//resources/sksl:sksl_compute_tests"}},
425*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_folding_tests", Rules: []string{"//resources/sksl:sksl_folding_tests"}},
426*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_inliner_tests", Rules: []string{"//resources/sksl:sksl_inliner_tests"}},
427*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_blend_tests", Rules: []string{"//resources/sksl:sksl_blend_tests"}},
428*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_settings_tests", Rules: []string{"//resources/sksl:sksl_settings_tests"}},
429*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_rte_tests", Rules: []string{"//resources/sksl:sksl_rte_tests"}},
430*c8dee2aaSAndroid Build Coastguard Worker		{Var: "sksl_rte_error_tests", Rules: []string{"//resources/sksl:sksl_rte_error_tests"}},
431*c8dee2aaSAndroid Build Coastguard Worker	}},
432*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/utils.gni", Vars: []exporter.GNIFileListExportDesc{
433*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_utils_public",
434*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
435*c8dee2aaSAndroid Build Coastguard Worker				"//include/utils:core_hdrs",
436*c8dee2aaSAndroid Build Coastguard Worker				"//include/utils/mac:public_hdrs"}},
437*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_utils_chromium",
438*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
439*c8dee2aaSAndroid Build Coastguard Worker				"//include/docs:multi_picture_document_hdrs",
440*c8dee2aaSAndroid Build Coastguard Worker			}},
441*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_utils_private",
442*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
443*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils/mac:mac_utils_priv",
444*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils/mac:mac_utils",
445*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils/win:core_hdrs",
446*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils/win:core_srcs",
447*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:core_priv_hdrs",
448*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:core_srcs",
449*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:char_to_glyphcache",
450*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:canvas_state_utils",
451*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:json_hdrs",
452*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:json_srcs",
453*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:multi_picture_document",
454*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:clip_stack_utils",
455*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:float_to_decimal",
456*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:utils_skslc_hdrs",
457*c8dee2aaSAndroid Build Coastguard Worker				"//src/utils:utils_skslc_srcs",
458*c8dee2aaSAndroid Build Coastguard Worker			}},
459*c8dee2aaSAndroid Build Coastguard Worker	},
460*c8dee2aaSAndroid Build Coastguard Worker	},
461*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/xps.gni", Vars: []exporter.GNIFileListExportDesc{
462*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_xps_public",
463*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//include/docs:xps_hdrs"}},
464*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_xps_sources",
465*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
466*c8dee2aaSAndroid Build Coastguard Worker				"//src/xps:core_hdrs",
467*c8dee2aaSAndroid Build Coastguard Worker				"//src/xps:core_srcs",
468*c8dee2aaSAndroid Build Coastguard Worker			}}},
469*c8dee2aaSAndroid Build Coastguard Worker	},
470*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/xml.gni", Vars: []exporter.GNIFileListExportDesc{
471*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_xml_sources",
472*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
473*c8dee2aaSAndroid Build Coastguard Worker				"//src/xml:_xml_hdrs",
474*c8dee2aaSAndroid Build Coastguard Worker				"//src/xml:_xml_srcs",
475*c8dee2aaSAndroid Build Coastguard Worker			}}},
476*c8dee2aaSAndroid Build Coastguard Worker	},
477*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "gn/gpu.gni", Vars: []exporter.GNIFileListExportDesc{
478*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_public",
479*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
480*c8dee2aaSAndroid Build Coastguard Worker				"//include/gpu/ganesh/mock:public_hdrs",
481*c8dee2aaSAndroid Build Coastguard Worker				"//include/gpu:shared_gpu_hdrs",
482*c8dee2aaSAndroid Build Coastguard Worker				"//include/gpu/ganesh:ganesh_hdrs",
483*c8dee2aaSAndroid Build Coastguard Worker			}},
484*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_ganesh_private",
485*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
486*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/gpu/ganesh:private_hdrs",
487*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/effects:effects_hdrs",
488*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/effects:effects_srcs",
489*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/geometry:geometry_hdrs",
490*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/geometry:geometry_srcs",
491*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/glsl:glsl_hdrs",
492*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/glsl:glsl_srcs",
493*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/gradients:gradient_hdrs",
494*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/gradients:gradient_srcs",
495*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/image:image_hdrs",
496*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/image:image_srcs",
497*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/mock:mock_hdrs",
498*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/mock:mock_srcs",
499*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/ops:ops_hdrs",
500*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/ops:ops_srcs",
501*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/surface:surface_srcs",
502*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/surface:surface_srcs",
503*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/tessellate:tessellate_hdrs",
504*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/tessellate:tessellate_srcs",
505*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/text:private_hdrs",
506*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/text:srcs",
507*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh:core_hdrs",
508*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh:core_skslc_hdrs",
509*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh:core_skslc_srcs",
510*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh:core_srcs",
511*c8dee2aaSAndroid Build Coastguard Worker			}},
512*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_android_private",
513*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
514*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/surface:android_srcs",
515*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh:android_srcs",
516*c8dee2aaSAndroid Build Coastguard Worker				"//src/image:android_srcs",
517*c8dee2aaSAndroid Build Coastguard Worker			}},
518*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_chromium_public",
519*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
520*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/chromium:ganesh_private_hdrs",
521*c8dee2aaSAndroid Build Coastguard Worker			}},
522*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_gl_public",
523*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
524*c8dee2aaSAndroid Build Coastguard Worker				"//include/gpu/ganesh/gl:public_hdrs",
525*c8dee2aaSAndroid Build Coastguard Worker			}},
526*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_gl_private",
527*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
528*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/gl:core_hdrs",
529*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/gl:core_srcs",
530*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/gl/builders:builder_hdrs",
531*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/gl/builders:builder_srcs",
532*c8dee2aaSAndroid Build Coastguard Worker			}},
533*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_android_gl_sources",
534*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
535*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/gl:android_srcs",
536*c8dee2aaSAndroid Build Coastguard Worker			}},
537*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_null_gpu_sources",
538*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
539*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/gl:native_interface_none",
540*c8dee2aaSAndroid Build Coastguard Worker			}},
541*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_vk_public",
542*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
543*c8dee2aaSAndroid Build Coastguard Worker				"//include/gpu/vk:shared_public_hdrs",
544*c8dee2aaSAndroid Build Coastguard Worker				"//include/gpu/ganesh/vk:public_hdrs",
545*c8dee2aaSAndroid Build Coastguard Worker			}},
546*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_vk_chromium_public",
547*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
548*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/chromium:vk_ganesh_hdrs",
549*c8dee2aaSAndroid Build Coastguard Worker			}},
550*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_vk_private",
551*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
552*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/vk:vk_hdrs",
553*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/vk:vk_srcs",
554*c8dee2aaSAndroid Build Coastguard Worker			}},
555*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_vk_android_private",
556*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
557*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/vk:android_srcs",
558*c8dee2aaSAndroid Build Coastguard Worker			}},
559*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_vk_chromium_private",
560*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
561*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/vk:vk_chromium_srcs",
562*c8dee2aaSAndroid Build Coastguard Worker			}},
563*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_direct3d_sources",
564*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
565*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/gpu/ganesh:d3d_private_hdrs",
566*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/d3d:d3d_hdrs",
567*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/d3d:d3d_srcs",
568*c8dee2aaSAndroid Build Coastguard Worker			}},
569*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_metal_public",
570*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
571*c8dee2aaSAndroid Build Coastguard Worker				"//include/gpu/ganesh/mtl:public_hdrs",
572*c8dee2aaSAndroid Build Coastguard Worker			}},
573*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_metal_private",
574*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
575*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/surface:mtl_objc_srcs",
576*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/mtl:mtl_hdrs",
577*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/mtl:mtl_srcs",
578*c8dee2aaSAndroid Build Coastguard Worker			}},
579*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_gpu_metal_cpp",
580*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
581*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/ganesh/mtl:mtl_cpp_hdrs",
582*c8dee2aaSAndroid Build Coastguard Worker			}},
583*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shared_gpu_sources",
584*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
585*c8dee2aaSAndroid Build Coastguard Worker				"//include/gpu:shared_gpu_hdrs",
586*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/base:shared_gpu_private_hdrs",
587*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/chromium:shared_private_hdrs",
588*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu:shared_hdrs",
589*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu:shared_srcs",
590*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/tessellate:tessellate_hdrs",
591*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/tessellate:tessellate_srcs",
592*c8dee2aaSAndroid Build Coastguard Worker				"//src/text/gpu:gpu_hdrs",
593*c8dee2aaSAndroid Build Coastguard Worker				"//src/text/gpu:gpu_srcs",
594*c8dee2aaSAndroid Build Coastguard Worker			}},
595*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shared_vk_sources",
596*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
597*c8dee2aaSAndroid Build Coastguard Worker				"//include/private/gpu/vk:private_hdrs",
598*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/vk:_vk_hdrs",
599*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/vk:_vk_srcs"}},
600*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_vma_sources",
601*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
602*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/vk/vulkanmemoryallocator:vma_srcs",
603*c8dee2aaSAndroid Build Coastguard Worker			}},
604*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shared_mtl_sources",
605*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
606*c8dee2aaSAndroid Build Coastguard Worker				"//include/gpu/mtl:public_hdrs",
607*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/mtl:mtl_hdrs",
608*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/mtl:mtl_srcs",
609*c8dee2aaSAndroid Build Coastguard Worker			}},
610*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shared_android_sources",
611*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
612*c8dee2aaSAndroid Build Coastguard Worker				"//src/gpu/android:shared_android_srcs",
613*c8dee2aaSAndroid Build Coastguard Worker			}},
614*c8dee2aaSAndroid Build Coastguard Worker	}},
615*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "modules/svg/svg.gni", Vars: []exporter.GNIFileListExportDesc{
616*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_svg_public",
617*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/svg/include:public_hdrs"}},
618*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_svg_sources",
619*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
620*c8dee2aaSAndroid Build Coastguard Worker				"//modules/svg/src:private_hdrs",
621*c8dee2aaSAndroid Build Coastguard Worker				"//modules/svg/src:srcs",
622*c8dee2aaSAndroid Build Coastguard Worker			}},
623*c8dee2aaSAndroid Build Coastguard Worker	}},
624*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "modules/bentleyottmann/bentleyottmann.gni", Vars: []exporter.GNIFileListExportDesc{
625*c8dee2aaSAndroid Build Coastguard Worker		{Var: "bentleyottmann_public",
626*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
627*c8dee2aaSAndroid Build Coastguard Worker				"//modules/bentleyottmann/include:hdrs",
628*c8dee2aaSAndroid Build Coastguard Worker			}},
629*c8dee2aaSAndroid Build Coastguard Worker		{Var: "bentleyottmann_sources",
630*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
631*c8dee2aaSAndroid Build Coastguard Worker				"//modules/bentleyottmann/src:srcs",
632*c8dee2aaSAndroid Build Coastguard Worker			}},
633*c8dee2aaSAndroid Build Coastguard Worker		{Var: "bentleyottmann_tests",
634*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
635*c8dee2aaSAndroid Build Coastguard Worker				"//modules/bentleyottmann/tests:tests",
636*c8dee2aaSAndroid Build Coastguard Worker			}},
637*c8dee2aaSAndroid Build Coastguard Worker	}},
638*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "modules/skparagraph/skparagraph.gni", Vars: []exporter.GNIFileListExportDesc{
639*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skparagraph_public",
640*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
641*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skparagraph/include:hdrs",
642*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skparagraph/utils:utils_hdrs"}},
643*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skparagraph_sources",
644*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
645*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skparagraph/src:srcs",
646*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skparagraph/utils:utils_srcs"}},
647*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skparagraph_utils",
648*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
649*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skparagraph/utils:utils_hdrs",
650*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skparagraph/utils:utils_srcs",
651*c8dee2aaSAndroid Build Coastguard Worker			}},
652*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skparagraph_tests",
653*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
654*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skparagraph/tests:tests_hdrs",
655*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skparagraph/tests:tests_srcs",
656*c8dee2aaSAndroid Build Coastguard Worker			}},
657*c8dee2aaSAndroid Build Coastguard Worker	}},
658*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "modules/skresources/skresources.gni", Vars: []exporter.GNIFileListExportDesc{
659*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_skresources_public",
660*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skresources/include:hdrs"}},
661*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_skresources_sources",
662*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skresources/src:srcs"}},
663*c8dee2aaSAndroid Build Coastguard Worker	}},
664*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "modules/skshaper/skshaper.gni", Vars: []exporter.GNIFileListExportDesc{
665*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shaper_public",
666*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skshaper/include:hdrs",
667*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skshaper/utils:core_hdrs",
668*c8dee2aaSAndroid Build Coastguard Worker			}},
669*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shaper_primitive_sources",
670*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skshaper/src:base_srcs"}},
671*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shaper_harfbuzz_sources",
672*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skshaper/src:harfbuzz_srcs"}},
673*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shaper_skunicode_sources",
674*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skshaper/src:skunicode_srcs"}},
675*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shaper_coretext_sources",
676*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skshaper/src:coretext_srcs"}},
677*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_shaper_tests",
678*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skshaper/tests:tests_srcs"}},
679*c8dee2aaSAndroid Build Coastguard Worker	}},
680*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "modules/skunicode/skunicode.gni", Vars: []exporter.GNIFileListExportDesc{
681*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_public",
682*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/include:hdrs"}},
683*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_sources",
684*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:srcs"}},
685*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_icu_sources",
686*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:icu_srcs"}},
687*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_icu_bidi_sources",
688*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:icu_bidi_srcs"}},
689*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_bidi_full_sources",
690*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:bidi_full_srcs"}},
691*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_bidi_subset_sources",
692*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:bidi_subset_srcs"}},
693*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_icu4x_sources",
694*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:icu4x_srcs"}},
695*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_client_icu_sources",
696*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:client_srcs"}},
697*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_builtin_icu_sources",
698*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:builtin_srcs"}},
699*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_runtime_icu_sources",
700*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:runtime_srcs"}},
701*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_libgrapheme_sources",
702*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/src:libgrapheme_srcs"}},
703*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_unicode_tests",
704*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skunicode/tests:tests"}},
705*c8dee2aaSAndroid Build Coastguard Worker	}},
706*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "modules/sksg/sksg.gni", Vars: []exporter.GNIFileListExportDesc{
707*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_sksg_sources",
708*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/sksg/src:srcs"}},
709*c8dee2aaSAndroid Build Coastguard Worker	}},
710*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "modules/skottie/skottie.gni", Vars: []exporter.GNIFileListExportDesc{
711*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_skottie_public",
712*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skottie/include:hdrs"}},
713*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skia_skottie_sources",
714*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
715*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skottie/src:core_hdrs",
716*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skottie/src:core_srcs",
717*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skottie/src/animator:srcs",
718*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skottie/src/effects:srcs",
719*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skottie/src/layers:srcs",
720*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skottie/src/layers/shapelayer:srcs",
721*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skottie/src/text:text_hdrs",
722*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skottie/src/text:text_srcs",
723*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skottie/src/text:text_shaper_srcs",
724*c8dee2aaSAndroid Build Coastguard Worker			}},
725*c8dee2aaSAndroid Build Coastguard Worker	}},
726*c8dee2aaSAndroid Build Coastguard Worker	{GNI: "modules/skcms/skcms.gni", Vars: []exporter.GNIFileListExportDesc{
727*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skcms_public_headers",
728*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{"//modules/skcms:public_hdrs"}},
729*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skcms_public",
730*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
731*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skcms:skcms_public",
732*c8dee2aaSAndroid Build Coastguard Worker			}},
733*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skcms_TransformBaseline",
734*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
735*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skcms:skcms_TransformBaseline",
736*c8dee2aaSAndroid Build Coastguard Worker			}},
737*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skcms_TransformHsw",
738*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
739*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skcms:skcms_TransformHsw",
740*c8dee2aaSAndroid Build Coastguard Worker			}},
741*c8dee2aaSAndroid Build Coastguard Worker		{Var: "skcms_TransformSkx",
742*c8dee2aaSAndroid Build Coastguard Worker			Rules: []string{
743*c8dee2aaSAndroid Build Coastguard Worker				"//modules/skcms:skcms_TransformSkx",
744*c8dee2aaSAndroid Build Coastguard Worker			}},
745*c8dee2aaSAndroid Build Coastguard Worker	}},
746*c8dee2aaSAndroid Build Coastguard Worker}
747*c8dee2aaSAndroid Build Coastguard Worker
748*c8dee2aaSAndroid Build Coastguard Workerconst (
749*c8dee2aaSAndroid Build Coastguard Worker	unknownErr    = 1
750*c8dee2aaSAndroid Build Coastguard Worker	invalidArgErr = 2
751*c8dee2aaSAndroid Build Coastguard Worker	exportErr     = 3
752*c8dee2aaSAndroid Build Coastguard Worker	verifyErr     = 4
753*c8dee2aaSAndroid Build Coastguard Worker	profilerErr   = 5
754*c8dee2aaSAndroid Build Coastguard Worker)
755*c8dee2aaSAndroid Build Coastguard Worker
756*c8dee2aaSAndroid Build Coastguard Workertype fileSystem struct {
757*c8dee2aaSAndroid Build Coastguard Worker	workspaceDir string
758*c8dee2aaSAndroid Build Coastguard Worker	outFormat    string
759*c8dee2aaSAndroid Build Coastguard Worker	openFiles    []*os.File
760*c8dee2aaSAndroid Build Coastguard Worker}
761*c8dee2aaSAndroid Build Coastguard Worker
762*c8dee2aaSAndroid Build Coastguard Workerfunc (fs *fileSystem) OpenFile(path string) (interfaces.Writer, error) {
763*c8dee2aaSAndroid Build Coastguard Worker	f, err := os.Create(path)
764*c8dee2aaSAndroid Build Coastguard Worker	if err != nil {
765*c8dee2aaSAndroid Build Coastguard Worker		return nil, skerr.Wrap(err)
766*c8dee2aaSAndroid Build Coastguard Worker	}
767*c8dee2aaSAndroid Build Coastguard Worker	fs.openFiles = append(fs.openFiles, f)
768*c8dee2aaSAndroid Build Coastguard Worker	return f, nil
769*c8dee2aaSAndroid Build Coastguard Worker}
770*c8dee2aaSAndroid Build Coastguard Worker
771*c8dee2aaSAndroid Build Coastguard Workerfunc (fs *fileSystem) ReadFile(filename string) ([]byte, error) {
772*c8dee2aaSAndroid Build Coastguard Worker	return os.ReadFile(filename)
773*c8dee2aaSAndroid Build Coastguard Worker}
774*c8dee2aaSAndroid Build Coastguard Worker
775*c8dee2aaSAndroid Build Coastguard Workerfunc (fs *fileSystem) Shutdown() {
776*c8dee2aaSAndroid Build Coastguard Worker	for _, f := range fs.openFiles {
777*c8dee2aaSAndroid Build Coastguard Worker		f.Close() // Ignore error.
778*c8dee2aaSAndroid Build Coastguard Worker	}
779*c8dee2aaSAndroid Build Coastguard Worker}
780*c8dee2aaSAndroid Build Coastguard Worker
781*c8dee2aaSAndroid Build Coastguard Worker// Make sure fileSystem fulfills the FileSystem interface.
782*c8dee2aaSAndroid Build Coastguard Workervar _ interfaces.FileSystem = (*fileSystem)(nil)
783*c8dee2aaSAndroid Build Coastguard Worker
784*c8dee2aaSAndroid Build Coastguard Workerfunc createExporter(projName, cmakeFileName string, fs *fileSystem) interfaces.Exporter {
785*c8dee2aaSAndroid Build Coastguard Worker	if fs.outFormat == "cmake" {
786*c8dee2aaSAndroid Build Coastguard Worker		return exporter.NewCMakeExporter(projName, fs.workspaceDir, cmakeFileName, fs)
787*c8dee2aaSAndroid Build Coastguard Worker	}
788*c8dee2aaSAndroid Build Coastguard Worker	params := exporter.GNIExporterParams{
789*c8dee2aaSAndroid Build Coastguard Worker		WorkspaceDir: fs.workspaceDir,
790*c8dee2aaSAndroid Build Coastguard Worker		ExportDescs:  gniExportDescs,
791*c8dee2aaSAndroid Build Coastguard Worker	}
792*c8dee2aaSAndroid Build Coastguard Worker	return exporter.NewGNIExporter(params, fs)
793*c8dee2aaSAndroid Build Coastguard Worker}
794*c8dee2aaSAndroid Build Coastguard Worker
795*c8dee2aaSAndroid Build Coastguard Workerfunc doExport(qr interfaces.QueryCommand, exp interfaces.Exporter, outFormat string) {
796*c8dee2aaSAndroid Build Coastguard Worker	err := exp.Export(qr)
797*c8dee2aaSAndroid Build Coastguard Worker	if err != nil {
798*c8dee2aaSAndroid Build Coastguard Worker		fmt.Fprintf(os.Stderr, "Error exporting to %s: %v\n", outFormat, err)
799*c8dee2aaSAndroid Build Coastguard Worker		os.Exit(exportErr)
800*c8dee2aaSAndroid Build Coastguard Worker	}
801*c8dee2aaSAndroid Build Coastguard Worker}
802*c8dee2aaSAndroid Build Coastguard Worker
803*c8dee2aaSAndroid Build Coastguard Workerfunc main() {
804*c8dee2aaSAndroid Build Coastguard Worker	var (
805*c8dee2aaSAndroid Build Coastguard Worker		queryRules    = common.NewMultiStringFlag("rule", nil, "Bazel rule (may be repeated).")
806*c8dee2aaSAndroid Build Coastguard Worker		outFormat     = flag.String("output_format", "", "Desired output format. One of cmake or gni.")
807*c8dee2aaSAndroid Build Coastguard Worker		cmakeFileName = flag.String("out", "CMakeLists.txt", "CMake output file")
808*c8dee2aaSAndroid Build Coastguard Worker		projName      = flag.String("proj_name", "", "CMake project name")
809*c8dee2aaSAndroid Build Coastguard Worker		cpuprofile    = flag.String("cpuprofile", "", "write cpu profile to file")
810*c8dee2aaSAndroid Build Coastguard Worker	)
811*c8dee2aaSAndroid Build Coastguard Worker	flag.Parse()
812*c8dee2aaSAndroid Build Coastguard Worker	if *outFormat != "cmake" && *outFormat != "gni" {
813*c8dee2aaSAndroid Build Coastguard Worker		if *outFormat == "" {
814*c8dee2aaSAndroid Build Coastguard Worker			fmt.Fprintln(os.Stderr, "Output format required")
815*c8dee2aaSAndroid Build Coastguard Worker		} else {
816*c8dee2aaSAndroid Build Coastguard Worker			fmt.Fprintf(os.Stderr, "Incorrect output format: \"%s\"\n", *outFormat)
817*c8dee2aaSAndroid Build Coastguard Worker		}
818*c8dee2aaSAndroid Build Coastguard Worker		fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
819*c8dee2aaSAndroid Build Coastguard Worker		flag.PrintDefaults()
820*c8dee2aaSAndroid Build Coastguard Worker		os.Exit(invalidArgErr)
821*c8dee2aaSAndroid Build Coastguard Worker	}
822*c8dee2aaSAndroid Build Coastguard Worker	if *cmakeFileName == "" || *projName == "" {
823*c8dee2aaSAndroid Build Coastguard Worker		fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
824*c8dee2aaSAndroid Build Coastguard Worker		flag.PrintDefaults()
825*c8dee2aaSAndroid Build Coastguard Worker		os.Exit(invalidArgErr)
826*c8dee2aaSAndroid Build Coastguard Worker	}
827*c8dee2aaSAndroid Build Coastguard Worker	workspaceDir, err := os.Getwd()
828*c8dee2aaSAndroid Build Coastguard Worker	if err != nil {
829*c8dee2aaSAndroid Build Coastguard Worker		fmt.Fprintf(os.Stderr, "Error getting pwd: %v", err)
830*c8dee2aaSAndroid Build Coastguard Worker		os.Exit(unknownErr)
831*c8dee2aaSAndroid Build Coastguard Worker	}
832*c8dee2aaSAndroid Build Coastguard Worker	if *cpuprofile != "" {
833*c8dee2aaSAndroid Build Coastguard Worker		f, err := os.Create(*cpuprofile)
834*c8dee2aaSAndroid Build Coastguard Worker		if err != nil {
835*c8dee2aaSAndroid Build Coastguard Worker			fmt.Fprintf(os.Stderr, "unable to create %q: %v\n", *cpuprofile, err)
836*c8dee2aaSAndroid Build Coastguard Worker			os.Exit(profilerErr)
837*c8dee2aaSAndroid Build Coastguard Worker		}
838*c8dee2aaSAndroid Build Coastguard Worker		defer f.Close()
839*c8dee2aaSAndroid Build Coastguard Worker		if err = pprof.StartCPUProfile(f); err != nil {
840*c8dee2aaSAndroid Build Coastguard Worker			fmt.Fprintf(os.Stderr, "error starting CPU profile: %v\n", err)
841*c8dee2aaSAndroid Build Coastguard Worker			os.Exit(profilerErr)
842*c8dee2aaSAndroid Build Coastguard Worker		}
843*c8dee2aaSAndroid Build Coastguard Worker		defer pprof.StopCPUProfile()
844*c8dee2aaSAndroid Build Coastguard Worker	}
845*c8dee2aaSAndroid Build Coastguard Worker	var qcmd *exporter.BazelQueryCommand
846*c8dee2aaSAndroid Build Coastguard Worker	switch *outFormat {
847*c8dee2aaSAndroid Build Coastguard Worker	case "gni":
848*c8dee2aaSAndroid Build Coastguard Worker		qcmd = exporter.NewBazelGNIQueryCommand(*queryRules, workspaceDir)
849*c8dee2aaSAndroid Build Coastguard Worker	case "cmake":
850*c8dee2aaSAndroid Build Coastguard Worker		qcmd = exporter.NewBazelCMakeQueryCommand(*queryRules, workspaceDir)
851*c8dee2aaSAndroid Build Coastguard Worker	}
852*c8dee2aaSAndroid Build Coastguard Worker	fs := fileSystem{workspaceDir: workspaceDir, outFormat: *outFormat}
853*c8dee2aaSAndroid Build Coastguard Worker	defer fs.Shutdown()
854*c8dee2aaSAndroid Build Coastguard Worker	var exp interfaces.Exporter = createExporter(*projName, *cmakeFileName, &fs)
855*c8dee2aaSAndroid Build Coastguard Worker	doExport(qcmd, exp, *outFormat)
856*c8dee2aaSAndroid Build Coastguard Worker}
857