xref: /aosp_15_r20/external/skia/third_party/third_party.gni (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2016 Google Inc.
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 Workerdeclare_args() {
7*c8dee2aaSAndroid Build Coastguard Worker  third_party_isystem = true
8*c8dee2aaSAndroid Build Coastguard Worker}
9*c8dee2aaSAndroid Build Coastguard Worker
10*c8dee2aaSAndroid Build Coastguard Workertemplate("third_party_config") {
11*c8dee2aaSAndroid Build Coastguard Worker  enabled = !defined(invoker.enabled) || invoker.enabled
12*c8dee2aaSAndroid Build Coastguard Worker  config(target_name) {
13*c8dee2aaSAndroid Build Coastguard Worker    if (enabled) {
14*c8dee2aaSAndroid Build Coastguard Worker      forward_variables_from(invoker, "*", [ "include_dirs" ])
15*c8dee2aaSAndroid Build Coastguard Worker      cflags = []
16*c8dee2aaSAndroid Build Coastguard Worker      if (is_win) {
17*c8dee2aaSAndroid Build Coastguard Worker        include_dirs = invoker.include_dirs
18*c8dee2aaSAndroid Build Coastguard Worker        if (is_clang) {
19*c8dee2aaSAndroid Build Coastguard Worker          foreach(dir, invoker.include_dirs) {
20*c8dee2aaSAndroid Build Coastguard Worker            cflags += [
21*c8dee2aaSAndroid Build Coastguard Worker              "/imsvc",
22*c8dee2aaSAndroid Build Coastguard Worker              rebase_path(dir),
23*c8dee2aaSAndroid Build Coastguard Worker            ]
24*c8dee2aaSAndroid Build Coastguard Worker          }
25*c8dee2aaSAndroid Build Coastguard Worker        }
26*c8dee2aaSAndroid Build Coastguard Worker      } else {
27*c8dee2aaSAndroid Build Coastguard Worker        foreach(dir, invoker.include_dirs) {
28*c8dee2aaSAndroid Build Coastguard Worker          if (third_party_isystem) {
29*c8dee2aaSAndroid Build Coastguard Worker            cflags += [
30*c8dee2aaSAndroid Build Coastguard Worker              "-isystem",
31*c8dee2aaSAndroid Build Coastguard Worker              rebase_path(dir),
32*c8dee2aaSAndroid Build Coastguard Worker            ]
33*c8dee2aaSAndroid Build Coastguard Worker          } else {
34*c8dee2aaSAndroid Build Coastguard Worker            cflags += [
35*c8dee2aaSAndroid Build Coastguard Worker              "-I",
36*c8dee2aaSAndroid Build Coastguard Worker              rebase_path(dir),
37*c8dee2aaSAndroid Build Coastguard Worker            ]
38*c8dee2aaSAndroid Build Coastguard Worker          }
39*c8dee2aaSAndroid Build Coastguard Worker        }
40*c8dee2aaSAndroid Build Coastguard Worker      }
41*c8dee2aaSAndroid Build Coastguard Worker    } else {
42*c8dee2aaSAndroid Build Coastguard Worker      not_needed(invoker, "*")
43*c8dee2aaSAndroid Build Coastguard Worker    }
44*c8dee2aaSAndroid Build Coastguard Worker  }
45*c8dee2aaSAndroid Build Coastguard Worker}
46*c8dee2aaSAndroid Build Coastguard Worker
47*c8dee2aaSAndroid Build Coastguard Workertemplate("third_party") {
48*c8dee2aaSAndroid Build Coastguard Worker  enabled = !defined(invoker.enabled) || invoker.enabled
49*c8dee2aaSAndroid Build Coastguard Worker  third_party_config(target_name + "_public") {
50*c8dee2aaSAndroid Build Coastguard Worker    if (enabled) {
51*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.public_defines)) {
52*c8dee2aaSAndroid Build Coastguard Worker        defines = invoker.public_defines
53*c8dee2aaSAndroid Build Coastguard Worker      }
54*c8dee2aaSAndroid Build Coastguard Worker      include_dirs = invoker.public_include_dirs
55*c8dee2aaSAndroid Build Coastguard Worker    } else {
56*c8dee2aaSAndroid Build Coastguard Worker      not_needed(invoker, "*")
57*c8dee2aaSAndroid Build Coastguard Worker    }
58*c8dee2aaSAndroid Build Coastguard Worker  }
59*c8dee2aaSAndroid Build Coastguard Worker
60*c8dee2aaSAndroid Build Coastguard Worker  # You can't make a static_library() without object files to archive,
61*c8dee2aaSAndroid Build Coastguard Worker  # but we can treat targets without object files as a source_set().
62*c8dee2aaSAndroid Build Coastguard Worker  if (defined(invoker.sources)) {
63*c8dee2aaSAndroid Build Coastguard Worker    _mode = "static_library"
64*c8dee2aaSAndroid Build Coastguard Worker  } else {
65*c8dee2aaSAndroid Build Coastguard Worker    _mode = "source_set"
66*c8dee2aaSAndroid Build Coastguard Worker  }
67*c8dee2aaSAndroid Build Coastguard Worker
68*c8dee2aaSAndroid Build Coastguard Worker  target(_mode, target_name) {
69*c8dee2aaSAndroid Build Coastguard Worker    if (enabled) {
70*c8dee2aaSAndroid Build Coastguard Worker      # set_defaults(_mode) might not exist or set configs
71*c8dee2aaSAndroid Build Coastguard Worker      if (!defined(configs)) {
72*c8dee2aaSAndroid Build Coastguard Worker        configs = []
73*c8dee2aaSAndroid Build Coastguard Worker      }
74*c8dee2aaSAndroid Build Coastguard Worker      if (is_debug) {
75*c8dee2aaSAndroid Build Coastguard Worker        configs += [ "../../gn/skia:optimize" ]
76*c8dee2aaSAndroid Build Coastguard Worker      }
77*c8dee2aaSAndroid Build Coastguard Worker      configs += [ "../../gn/skia:recover_pointer_overflow" ]
78*c8dee2aaSAndroid Build Coastguard Worker
79*c8dee2aaSAndroid Build Coastguard Worker      # "*" clobbers the current scope; append to existing configs
80*c8dee2aaSAndroid Build Coastguard Worker      forward_variables_from(invoker,
81*c8dee2aaSAndroid Build Coastguard Worker                             "*",
82*c8dee2aaSAndroid Build Coastguard Worker                             [
83*c8dee2aaSAndroid Build Coastguard Worker                               "public_include_dirs",
84*c8dee2aaSAndroid Build Coastguard Worker                               "configs",
85*c8dee2aaSAndroid Build Coastguard Worker                             ])
86*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.configs)) {
87*c8dee2aaSAndroid Build Coastguard Worker        configs += invoker.configs
88*c8dee2aaSAndroid Build Coastguard Worker      }
89*c8dee2aaSAndroid Build Coastguard Worker      public_configs = [ ":" + target_name + "_public" ]
90*c8dee2aaSAndroid Build Coastguard Worker
91*c8dee2aaSAndroid Build Coastguard Worker      # Warnings are just noise if we're not maintaining the code.
92*c8dee2aaSAndroid Build Coastguard Worker      if (!defined(cflags)) {
93*c8dee2aaSAndroid Build Coastguard Worker        cflags = []
94*c8dee2aaSAndroid Build Coastguard Worker      }
95*c8dee2aaSAndroid Build Coastguard Worker      if (is_win) {
96*c8dee2aaSAndroid Build Coastguard Worker        cflags += [ "/w" ]
97*c8dee2aaSAndroid Build Coastguard Worker      } else {
98*c8dee2aaSAndroid Build Coastguard Worker        cflags += [ "-w" ]
99*c8dee2aaSAndroid Build Coastguard Worker      }
100*c8dee2aaSAndroid Build Coastguard Worker    }
101*c8dee2aaSAndroid Build Coastguard Worker  }
102*c8dee2aaSAndroid Build Coastguard Worker}
103*c8dee2aaSAndroid Build Coastguard Worker
104*c8dee2aaSAndroid Build Coastguard Workertemplate("system") {
105*c8dee2aaSAndroid Build Coastguard Worker  config(target_name + "_public") {
106*c8dee2aaSAndroid Build Coastguard Worker    forward_variables_from(invoker, "*", [])
107*c8dee2aaSAndroid Build Coastguard Worker  }
108*c8dee2aaSAndroid Build Coastguard Worker  group(target_name) {
109*c8dee2aaSAndroid Build Coastguard Worker    public_configs = [ ":" + target_name + "_public" ]
110*c8dee2aaSAndroid Build Coastguard Worker  }
111*c8dee2aaSAndroid Build Coastguard Worker}
112