• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2016 Google Inc.
2#
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6template("third_party") {
7  enabled = !defined(invoker.enabled) || invoker.enabled
8  config(target_name + "_public") {
9    if (enabled) {
10      cflags = []
11      if (defined(invoker.public_defines)) {
12        defines = invoker.public_defines
13      }
14      if (is_win && !is_clang) {
15        include_dirs = invoker.public_include_dirs
16      } else if (is_win && is_clang) {
17        foreach(dir, invoker.public_include_dirs) {
18          cflags += [
19            "/imsvc",
20            rebase_path(dir),
21          ]
22        }
23      } else {
24        foreach(dir, invoker.public_include_dirs) {
25          cflags += [
26            "-isystem",
27            rebase_path(dir),
28          ]
29        }
30      }
31    } else {
32      not_needed(invoker, "*")
33    }
34  }
35
36  # You can't make a static_library() without object files to archive,
37  # but we can treat targets without object files as a source_set().
38  if (defined(invoker.sources)) {
39    _mode = "static_library"
40  } else {
41    _mode = "source_set"
42  }
43
44  target(_mode, target_name) {
45    if (enabled) {
46      forward_variables_from(invoker, "*", [ "public_include_dirs" ])
47      public_configs = [ ":" + target_name + "_public" ]
48
49      # Warnings are just noise if we're not maintaining the code.
50      if (is_win) {
51        cflags = [ "/w" ]
52      } else {
53        cflags = [ "-w" ]
54      }
55    }
56  }
57}
58
59set_defaults("third_party") {
60  configs = default_configs
61  if (!is_official_build) {
62    # Official builds don't have warnings to begin with.
63    configs -= [ "//gn:warnings" ]
64  }
65
66  # Don't want to to deal with this (especially /RTCc)
67  if (sanitize == "MSVC") {
68    configs -= [ "//gn:msvc_rtc" ]
69  }
70  if (is_debug) {
71    configs += [ "//gn:optimize" ]
72  }
73}
74
75template("system") {
76  config(target_name + "_public") {
77    forward_variables_from(invoker, "*", [])
78  }
79  group(target_name) {
80    public_configs = [ ":" + target_name + "_public" ]
81  }
82}
83