xref: /aosp_15_r20/external/libyuv/BUILD.gn (revision 4e366538070a3a6c5c163c31b791eab742e1657a)
1*4e366538SXin Li# Copyright 2014 The LibYuv Project Authors. All rights reserved.
2*4e366538SXin Li#
3*4e366538SXin Li# Use of this source code is governed by a BSD-style license
4*4e366538SXin Li# that can be found in the LICENSE file in the root of the source
5*4e366538SXin Li# tree. An additional intellectual property rights grant can be found
6*4e366538SXin Li# in the file PATENTS. All contributing project authors may
7*4e366538SXin Li# be found in the AUTHORS file in the root of the source tree.
8*4e366538SXin Li
9*4e366538SXin Liimport("//build/config/features.gni")
10*4e366538SXin Liimport("//testing/test.gni")
11*4e366538SXin Liimport("libyuv.gni")
12*4e366538SXin Li
13*4e366538SXin Lideclare_args() {
14*4e366538SXin Li  # Set to false to disable building with absl flags.
15*4e366538SXin Li  libyuv_use_absl_flags = true
16*4e366538SXin Li
17*4e366538SXin Li  # When building a shared library using a target in WebRTC or
18*4e366538SXin Li  # Chromium projects that depends on libyuv, setting this flag
19*4e366538SXin Li  # to true makes libyuv symbols visible inside that library.
20*4e366538SXin Li  libyuv_symbols_visible = false
21*4e366538SXin Li}
22*4e366538SXin Li
23*4e366538SXin Liconfig("libyuv_config") {
24*4e366538SXin Li  include_dirs = [ "include" ]
25*4e366538SXin Li  if (is_android) {
26*4e366538SXin Li    if (target_cpu == "arm" || target_cpu == "x86" || target_cpu == "mipsel") {
27*4e366538SXin Li      ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker" ]
28*4e366538SXin Li    } else {
29*4e366538SXin Li      ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64" ]
30*4e366538SXin Li    }
31*4e366538SXin Li  }
32*4e366538SXin Li  defines = []
33*4e366538SXin Li  if (!libyuv_use_neon) {
34*4e366538SXin Li    defines += [ "LIBYUV_DISABLE_NEON" ]
35*4e366538SXin Li  }
36*4e366538SXin Li  if (libyuv_disable_rvv) {
37*4e366538SXin Li    defines += [ "LIBYUV_DISABLE_RVV" ]
38*4e366538SXin Li  }
39*4e366538SXin Li  if (!libyuv_use_lsx) {
40*4e366538SXin Li    defines += [ "LIBYUV_DISABLE_LSX" ]
41*4e366538SXin Li  }
42*4e366538SXin Li  if (!libyuv_use_lasx) {
43*4e366538SXin Li    defines += [ "LIBYUV_DISABLE_LASX" ]
44*4e366538SXin Li  }
45*4e366538SXin Li}
46*4e366538SXin Li
47*4e366538SXin Li# This target is built when no specific target is specified on the command line.
48*4e366538SXin Ligroup("default") {
49*4e366538SXin Li  testonly = true
50*4e366538SXin Li  deps = [ ":libyuv" ]
51*4e366538SXin Li  if (libyuv_include_tests) {
52*4e366538SXin Li    deps += [
53*4e366538SXin Li      ":compare",
54*4e366538SXin Li      ":cpuid",
55*4e366538SXin Li      ":i444tonv12_eg",
56*4e366538SXin Li      ":libyuv_unittest",
57*4e366538SXin Li      ":psnr",
58*4e366538SXin Li      ":yuvconstants",
59*4e366538SXin Li      ":yuvconvert",
60*4e366538SXin Li    ]
61*4e366538SXin Li  }
62*4e366538SXin Li}
63*4e366538SXin Li
64*4e366538SXin Ligroup("libyuv") {
65*4e366538SXin Li  all_dependent_configs = [ ":libyuv_config" ]
66*4e366538SXin Li  deps = []
67*4e366538SXin Li
68*4e366538SXin Li  if (is_win && target_cpu == "x64") {
69*4e366538SXin Li    # Compile with clang in order to get inline assembly
70*4e366538SXin Li    public_deps = [ ":libyuv_internal(//build/toolchain/win:win_clang_x64)" ]
71*4e366538SXin Li  } else {
72*4e366538SXin Li    public_deps = [ ":libyuv_internal" ]
73*4e366538SXin Li  }
74*4e366538SXin Li
75*4e366538SXin Li  if (libyuv_use_neon) {
76*4e366538SXin Li    deps += [ ":libyuv_neon" ]
77*4e366538SXin Li  }
78*4e366538SXin Li
79*4e366538SXin Li  if (libyuv_use_msa) {
80*4e366538SXin Li    deps += [ ":libyuv_msa" ]
81*4e366538SXin Li  }
82*4e366538SXin Li
83*4e366538SXin Li  if (libyuv_use_lsx) {
84*4e366538SXin Li    deps += [ ":libyuv_lsx" ]
85*4e366538SXin Li  }
86*4e366538SXin Li
87*4e366538SXin Li  if (libyuv_use_lasx) {
88*4e366538SXin Li    deps += [ ":libyuv_lasx" ]
89*4e366538SXin Li  }
90*4e366538SXin Li
91*4e366538SXin Li  if (!is_ios && !libyuv_disable_jpeg) {
92*4e366538SXin Li    # Make sure that clients of libyuv link with libjpeg. This can't go in
93*4e366538SXin Li    # libyuv_internal because in Windows x64 builds that will generate a clang
94*4e366538SXin Li    # build of libjpeg, and we don't want two copies.
95*4e366538SXin Li    deps += [ "//third_party:jpeg" ]
96*4e366538SXin Li  }
97*4e366538SXin Li}
98*4e366538SXin Li
99*4e366538SXin Listatic_library("libyuv_internal") {
100*4e366538SXin Li  visibility = [ ":*" ]
101*4e366538SXin Li
102*4e366538SXin Li  sources = [
103*4e366538SXin Li    # Headers
104*4e366538SXin Li    "include/libyuv.h",
105*4e366538SXin Li    "include/libyuv/basic_types.h",
106*4e366538SXin Li    "include/libyuv/compare.h",
107*4e366538SXin Li    "include/libyuv/convert.h",
108*4e366538SXin Li    "include/libyuv/convert_argb.h",
109*4e366538SXin Li    "include/libyuv/convert_from.h",
110*4e366538SXin Li    "include/libyuv/convert_from_argb.h",
111*4e366538SXin Li    "include/libyuv/cpu_id.h",
112*4e366538SXin Li    "include/libyuv/mjpeg_decoder.h",
113*4e366538SXin Li    "include/libyuv/planar_functions.h",
114*4e366538SXin Li    "include/libyuv/rotate.h",
115*4e366538SXin Li    "include/libyuv/rotate_argb.h",
116*4e366538SXin Li    "include/libyuv/rotate_row.h",
117*4e366538SXin Li    "include/libyuv/row.h",
118*4e366538SXin Li    "include/libyuv/scale.h",
119*4e366538SXin Li    "include/libyuv/scale_argb.h",
120*4e366538SXin Li    "include/libyuv/scale_rgb.h",
121*4e366538SXin Li    "include/libyuv/scale_row.h",
122*4e366538SXin Li    "include/libyuv/scale_uv.h",
123*4e366538SXin Li    "include/libyuv/version.h",
124*4e366538SXin Li    "include/libyuv/video_common.h",
125*4e366538SXin Li
126*4e366538SXin Li    # Source Files
127*4e366538SXin Li    "source/compare.cc",
128*4e366538SXin Li    "source/compare_common.cc",
129*4e366538SXin Li    "source/compare_gcc.cc",
130*4e366538SXin Li    "source/compare_win.cc",
131*4e366538SXin Li    "source/convert.cc",
132*4e366538SXin Li    "source/convert_argb.cc",
133*4e366538SXin Li    "source/convert_from.cc",
134*4e366538SXin Li    "source/convert_from_argb.cc",
135*4e366538SXin Li    "source/convert_jpeg.cc",
136*4e366538SXin Li    "source/convert_to_argb.cc",
137*4e366538SXin Li    "source/convert_to_i420.cc",
138*4e366538SXin Li    "source/cpu_id.cc",
139*4e366538SXin Li    "source/mjpeg_decoder.cc",
140*4e366538SXin Li    "source/mjpeg_validate.cc",
141*4e366538SXin Li    "source/planar_functions.cc",
142*4e366538SXin Li    "source/rotate.cc",
143*4e366538SXin Li    "source/rotate_any.cc",
144*4e366538SXin Li    "source/rotate_argb.cc",
145*4e366538SXin Li    "source/rotate_common.cc",
146*4e366538SXin Li    "source/rotate_gcc.cc",
147*4e366538SXin Li    "source/rotate_win.cc",
148*4e366538SXin Li    "source/row_any.cc",
149*4e366538SXin Li    "source/row_common.cc",
150*4e366538SXin Li    "source/row_gcc.cc",
151*4e366538SXin Li    "source/row_rvv.cc",
152*4e366538SXin Li    "source/row_win.cc",
153*4e366538SXin Li    "source/scale.cc",
154*4e366538SXin Li    "source/scale_any.cc",
155*4e366538SXin Li    "source/scale_argb.cc",
156*4e366538SXin Li    "source/scale_common.cc",
157*4e366538SXin Li    "source/scale_gcc.cc",
158*4e366538SXin Li    "source/scale_rgb.cc",
159*4e366538SXin Li    "source/scale_rvv.cc",
160*4e366538SXin Li    "source/scale_uv.cc",
161*4e366538SXin Li    "source/scale_win.cc",
162*4e366538SXin Li    "source/video_common.cc",
163*4e366538SXin Li  ]
164*4e366538SXin Li
165*4e366538SXin Li  configs += [ ":libyuv_config" ]
166*4e366538SXin Li  defines = []
167*4e366538SXin Li  deps = []
168*4e366538SXin Li
169*4e366538SXin Li  if (libyuv_symbols_visible) {
170*4e366538SXin Li    configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
171*4e366538SXin Li    configs += [ "//build/config/gcc:symbol_visibility_default" ]
172*4e366538SXin Li  }
173*4e366538SXin Li
174*4e366538SXin Li  if ((!is_ios || use_blink) && !libyuv_disable_jpeg) {
175*4e366538SXin Li    defines += [ "HAVE_JPEG" ]
176*4e366538SXin Li
177*4e366538SXin Li    # Needed to pull in libjpeg headers. Can't add //third_party:jpeg to deps
178*4e366538SXin Li    # because in Windows x64 build it will get compiled with clang.
179*4e366538SXin Li    deps += [ "//third_party:jpeg_includes" ]
180*4e366538SXin Li  }
181*4e366538SXin Li
182*4e366538SXin Li  # Always enable optimization for Release and NaCl builds (to workaround
183*4e366538SXin Li  # crbug.com/538243).
184*4e366538SXin Li  if (!is_debug || is_nacl) {
185*4e366538SXin Li    configs -= [ "//build/config/compiler:default_optimization" ]
186*4e366538SXin Li
187*4e366538SXin Li    # Enable optimize for speed (-O2) over size (-Os).
188*4e366538SXin Li    configs += [ "//build/config/compiler:optimize_max" ]
189*4e366538SXin Li  }
190*4e366538SXin Li
191*4e366538SXin Li  # To enable AVX2 or other cpu optimization, pass flag here
192*4e366538SXin Li  if (!is_win) {
193*4e366538SXin Li    cflags = [
194*4e366538SXin Li      # "-mpopcnt",
195*4e366538SXin Li      # "-mavx2",
196*4e366538SXin Li      # "-mfma",
197*4e366538SXin Li      "-ffp-contract=fast",  # Enable fma vectorization for NEON.
198*4e366538SXin Li    ]
199*4e366538SXin Li  }
200*4e366538SXin Li}
201*4e366538SXin Li
202*4e366538SXin Liif (libyuv_use_neon) {
203*4e366538SXin Li  static_library("libyuv_neon") {
204*4e366538SXin Li    sources = [
205*4e366538SXin Li      # ARM Source Files
206*4e366538SXin Li      "source/compare_neon.cc",
207*4e366538SXin Li      "source/compare_neon64.cc",
208*4e366538SXin Li      "source/rotate_neon.cc",
209*4e366538SXin Li      "source/rotate_neon64.cc",
210*4e366538SXin Li      "source/row_neon.cc",
211*4e366538SXin Li      "source/row_neon64.cc",
212*4e366538SXin Li      "source/scale_neon.cc",
213*4e366538SXin Li      "source/scale_neon64.cc",
214*4e366538SXin Li    ]
215*4e366538SXin Li
216*4e366538SXin Li    deps = [ ":libyuv_internal" ]
217*4e366538SXin Li
218*4e366538SXin Li    public_configs = [ ":libyuv_config" ]
219*4e366538SXin Li
220*4e366538SXin Li    # Always enable optimization for Release and NaCl builds (to workaround
221*4e366538SXin Li    # crbug.com/538243).
222*4e366538SXin Li    if (!is_debug) {
223*4e366538SXin Li      configs -= [ "//build/config/compiler:default_optimization" ]
224*4e366538SXin Li
225*4e366538SXin Li      # Enable optimize for speed (-O2) over size (-Os).
226*4e366538SXin Li      # TODO(fbarchard): Consider optimize_speed which is O3.
227*4e366538SXin Li      configs += [ "//build/config/compiler:optimize_max" ]
228*4e366538SXin Li    }
229*4e366538SXin Li
230*4e366538SXin Li    if (current_cpu != "arm64") {
231*4e366538SXin Li      configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
232*4e366538SXin Li      cflags = [ "-mfpu=neon" ]
233*4e366538SXin Li    }
234*4e366538SXin Li  }
235*4e366538SXin Li}
236*4e366538SXin Li
237*4e366538SXin Liif (libyuv_use_msa) {
238*4e366538SXin Li  static_library("libyuv_msa") {
239*4e366538SXin Li    sources = [
240*4e366538SXin Li      # MSA Source Files
241*4e366538SXin Li      "source/compare_msa.cc",
242*4e366538SXin Li      "source/rotate_msa.cc",
243*4e366538SXin Li      "source/row_msa.cc",
244*4e366538SXin Li      "source/scale_msa.cc",
245*4e366538SXin Li    ]
246*4e366538SXin Li
247*4e366538SXin Li    deps = [ ":libyuv_internal" ]
248*4e366538SXin Li
249*4e366538SXin Li    public_configs = [ ":libyuv_config" ]
250*4e366538SXin Li  }
251*4e366538SXin Li}
252*4e366538SXin Li
253*4e366538SXin Liif (libyuv_use_lsx) {
254*4e366538SXin Li  static_library("libyuv_lsx") {
255*4e366538SXin Li    sources = [
256*4e366538SXin Li      # LSX Source Files
257*4e366538SXin Li      "source/rotate_lsx.cc",
258*4e366538SXin Li      "source/row_lsx.cc",
259*4e366538SXin Li      "source/scale_lsx.cc",
260*4e366538SXin Li    ]
261*4e366538SXin Li
262*4e366538SXin Li    cflags_cc = [
263*4e366538SXin Li      "-mlsx",
264*4e366538SXin Li      "-Wno-c++11-narrowing",
265*4e366538SXin Li    ]
266*4e366538SXin Li
267*4e366538SXin Li    deps = [ ":libyuv_internal" ]
268*4e366538SXin Li
269*4e366538SXin Li    public_configs = [ ":libyuv_config" ]
270*4e366538SXin Li  }
271*4e366538SXin Li}
272*4e366538SXin Li
273*4e366538SXin Liif (libyuv_use_lasx) {
274*4e366538SXin Li  static_library("libyuv_lasx") {
275*4e366538SXin Li    sources = [
276*4e366538SXin Li      # LASX Source Files
277*4e366538SXin Li      "source/row_lasx.cc",
278*4e366538SXin Li    ]
279*4e366538SXin Li
280*4e366538SXin Li    cflags_cc = [
281*4e366538SXin Li      "-mlasx",
282*4e366538SXin Li      "-Wno-c++11-narrowing",
283*4e366538SXin Li    ]
284*4e366538SXin Li
285*4e366538SXin Li    deps = [ ":libyuv_internal" ]
286*4e366538SXin Li
287*4e366538SXin Li    public_configs = [ ":libyuv_config" ]
288*4e366538SXin Li  }
289*4e366538SXin Li}
290*4e366538SXin Li
291*4e366538SXin Liif (libyuv_include_tests) {
292*4e366538SXin Li  config("libyuv_unittest_warnings_config") {
293*4e366538SXin Li    if (!is_win) {
294*4e366538SXin Li      cflags = [
295*4e366538SXin Li        # TODO(fbarchard): Fix sign and unused variable warnings.
296*4e366538SXin Li        "-Wno-sign-compare",
297*4e366538SXin Li        "-Wno-unused-variable",
298*4e366538SXin Li      ]
299*4e366538SXin Li    }
300*4e366538SXin Li    if (is_win) {
301*4e366538SXin Li      cflags = [
302*4e366538SXin Li        "/wd4245",  # signed/unsigned mismatch
303*4e366538SXin Li        "/wd4189",  # local variable is initialized but not referenced
304*4e366538SXin Li      ]
305*4e366538SXin Li    }
306*4e366538SXin Li  }
307*4e366538SXin Li  config("libyuv_unittest_config") {
308*4e366538SXin Li    defines = [ "GTEST_RELATIVE_PATH" ]
309*4e366538SXin Li  }
310*4e366538SXin Li
311*4e366538SXin Li  test("libyuv_unittest") {
312*4e366538SXin Li    testonly = true
313*4e366538SXin Li
314*4e366538SXin Li    sources = [
315*4e366538SXin Li      "unit_test/basictypes_test.cc",
316*4e366538SXin Li      "unit_test/color_test.cc",
317*4e366538SXin Li      "unit_test/compare_test.cc",
318*4e366538SXin Li      "unit_test/convert_argb_test.cc",
319*4e366538SXin Li      "unit_test/convert_test.cc",
320*4e366538SXin Li      "unit_test/cpu_test.cc",
321*4e366538SXin Li      "unit_test/cpu_thread_test.cc",
322*4e366538SXin Li      "unit_test/math_test.cc",
323*4e366538SXin Li      "unit_test/planar_test.cc",
324*4e366538SXin Li      "unit_test/rotate_argb_test.cc",
325*4e366538SXin Li      "unit_test/rotate_test.cc",
326*4e366538SXin Li      "unit_test/scale_argb_test.cc",
327*4e366538SXin Li      "unit_test/scale_plane_test.cc",
328*4e366538SXin Li      "unit_test/scale_rgb_test.cc",
329*4e366538SXin Li      "unit_test/scale_test.cc",
330*4e366538SXin Li      "unit_test/scale_uv_test.cc",
331*4e366538SXin Li      "unit_test/unit_test.cc",
332*4e366538SXin Li      "unit_test/unit_test.h",
333*4e366538SXin Li      "unit_test/video_common_test.cc",
334*4e366538SXin Li    ]
335*4e366538SXin Li
336*4e366538SXin Li    deps = [
337*4e366538SXin Li      ":libyuv",
338*4e366538SXin Li      "//testing/gtest",
339*4e366538SXin Li    ]
340*4e366538SXin Li
341*4e366538SXin Li    defines = []
342*4e366538SXin Li    if (libyuv_use_absl_flags) {
343*4e366538SXin Li      defines += [ "LIBYUV_USE_ABSL_FLAGS" ]
344*4e366538SXin Li      deps += [
345*4e366538SXin Li        "//third_party/abseil-cpp/absl/flags:flag",
346*4e366538SXin Li        "//third_party/abseil-cpp/absl/flags:parse",
347*4e366538SXin Li      ]
348*4e366538SXin Li    }
349*4e366538SXin Li
350*4e366538SXin Li    configs += [ ":libyuv_unittest_warnings_config" ]
351*4e366538SXin Li
352*4e366538SXin Li    public_deps = [ "//testing/gtest" ]
353*4e366538SXin Li    public_configs = [ ":libyuv_unittest_config" ]
354*4e366538SXin Li
355*4e366538SXin Li    if (is_linux || is_chromeos) {
356*4e366538SXin Li      cflags = [ "-fexceptions" ]
357*4e366538SXin Li    }
358*4e366538SXin Li    if (is_ios) {
359*4e366538SXin Li      configs -= [ "//build/config/compiler:default_symbols" ]
360*4e366538SXin Li      configs += [ "//build/config/compiler:symbols" ]
361*4e366538SXin Li      cflags = [ "-Wno-sometimes-uninitialized" ]
362*4e366538SXin Li    }
363*4e366538SXin Li    if (!is_ios && !libyuv_disable_jpeg) {
364*4e366538SXin Li      defines += [ "HAVE_JPEG" ]
365*4e366538SXin Li    }
366*4e366538SXin Li    if (is_android) {
367*4e366538SXin Li      deps += [ "//testing/android/native_test:native_test_native_code" ]
368*4e366538SXin Li    }
369*4e366538SXin Li
370*4e366538SXin Li    # TODO(YangZhang): These lines can be removed when high accuracy
371*4e366538SXin Li    # YUV to RGB to Neon is ported.
372*4e366538SXin Li    if ((target_cpu == "armv7" || target_cpu == "armv7s" ||
373*4e366538SXin Li         (target_cpu == "arm" && arm_version >= 7) || target_cpu == "arm64") &&
374*4e366538SXin Li        (arm_use_neon || arm_optionally_use_neon)) {
375*4e366538SXin Li      defines += [ "LIBYUV_NEON" ]
376*4e366538SXin Li    }
377*4e366538SXin Li
378*4e366538SXin Li    defines += [
379*4e366538SXin Li      # Enable the following 3 macros to turn off assembly for specified CPU.
380*4e366538SXin Li      # "LIBYUV_DISABLE_X86",
381*4e366538SXin Li      # "LIBYUV_DISABLE_NEON",
382*4e366538SXin Li      # Enable the following macro to build libyuv as a shared library (dll).
383*4e366538SXin Li      # "LIBYUV_USING_SHARED_LIBRARY"
384*4e366538SXin Li    ]
385*4e366538SXin Li  }
386*4e366538SXin Li
387*4e366538SXin Li  executable("compare") {
388*4e366538SXin Li    sources = [
389*4e366538SXin Li      # sources
390*4e366538SXin Li      "util/compare.cc",
391*4e366538SXin Li    ]
392*4e366538SXin Li    deps = [ ":libyuv" ]
393*4e366538SXin Li    if (is_linux || is_chromeos) {
394*4e366538SXin Li      cflags = [ "-fexceptions" ]
395*4e366538SXin Li    }
396*4e366538SXin Li  }
397*4e366538SXin Li
398*4e366538SXin Li  executable("yuvconvert") {
399*4e366538SXin Li    sources = [
400*4e366538SXin Li      # sources
401*4e366538SXin Li      "util/yuvconvert.cc",
402*4e366538SXin Li    ]
403*4e366538SXin Li    deps = [ ":libyuv" ]
404*4e366538SXin Li    if (is_linux || is_chromeos) {
405*4e366538SXin Li      cflags = [ "-fexceptions" ]
406*4e366538SXin Li    }
407*4e366538SXin Li  }
408*4e366538SXin Li
409*4e366538SXin Li  executable("yuvconstants") {
410*4e366538SXin Li    sources = [
411*4e366538SXin Li      # sources
412*4e366538SXin Li      "util/yuvconstants.c",
413*4e366538SXin Li    ]
414*4e366538SXin Li    deps = [ ":libyuv" ]
415*4e366538SXin Li    if (is_linux || is_chromeos) {
416*4e366538SXin Li      cflags = [ "-fexceptions" ]
417*4e366538SXin Li    }
418*4e366538SXin Li  }
419*4e366538SXin Li
420*4e366538SXin Li  executable("psnr") {
421*4e366538SXin Li    sources = [
422*4e366538SXin Li      # sources
423*4e366538SXin Li      "util/psnr.cc",
424*4e366538SXin Li      "util/psnr_main.cc",
425*4e366538SXin Li      "util/ssim.cc",
426*4e366538SXin Li    ]
427*4e366538SXin Li    deps = [ ":libyuv" ]
428*4e366538SXin Li
429*4e366538SXin Li    if (!is_ios && !libyuv_disable_jpeg) {
430*4e366538SXin Li      defines = [ "HAVE_JPEG" ]
431*4e366538SXin Li    }
432*4e366538SXin Li  }
433*4e366538SXin Li
434*4e366538SXin Li  executable("i444tonv12_eg") {
435*4e366538SXin Li    sources = [
436*4e366538SXin Li      # sources
437*4e366538SXin Li      "util/i444tonv12_eg.cc",
438*4e366538SXin Li    ]
439*4e366538SXin Li    deps = [ ":libyuv" ]
440*4e366538SXin Li  }
441*4e366538SXin Li
442*4e366538SXin Li  executable("cpuid") {
443*4e366538SXin Li    sources = [
444*4e366538SXin Li      # sources
445*4e366538SXin Li      "util/cpuid.c",
446*4e366538SXin Li    ]
447*4e366538SXin Li    deps = [ ":libyuv" ]
448*4e366538SXin Li  }
449*4e366538SXin Li}
450