36e67aa869
This introduces a 'third_party_config' gn template which forwards any include_dirs as cflag system dirs. This is then used on the dawn and shaderc configs to suppress warnings from use of their headers in Skia. This route was chosen as a way to minimize the diff with the upstream BUILD.gn files for these projects for easier updates. It would be nice if gn could handle this in the build system, since it isn't good to hide include directories from gn this way. The gn issue https://bugs.chromium.org/p/gn/issues/detail?id=157 was created to track gn being able to do this in a cleaner way. Change-Id: I2d17d099db7b3d8b5a960576ca0535a22badd902 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/281356 Auto-Submit: Ben Wagner <bungeman@google.com> Commit-Queue: Mike Klein <mtklein@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
103 lines
2.4 KiB
Plaintext
103 lines
2.4 KiB
Plaintext
# Copyright 2016 Google Inc.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
template("third_party_config") {
|
|
enabled = !defined(invoker.enabled) || invoker.enabled
|
|
config(target_name) {
|
|
if (enabled) {
|
|
forward_variables_from(invoker, "*", [ "include_dirs" ])
|
|
cflags = []
|
|
if (is_win) {
|
|
include_dirs = invoker.include_dirs
|
|
if (is_clang) {
|
|
foreach(dir, invoker.include_dirs) {
|
|
cflags += [
|
|
"/imsvc",
|
|
rebase_path(dir),
|
|
]
|
|
}
|
|
}
|
|
} else {
|
|
foreach(dir, invoker.include_dirs) {
|
|
if (werror) {
|
|
cflags += [
|
|
"-isystem",
|
|
rebase_path(dir),
|
|
]
|
|
} else {
|
|
cflags += [
|
|
"-I",
|
|
rebase_path(dir),
|
|
]
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
not_needed(invoker, "*")
|
|
}
|
|
}
|
|
}
|
|
|
|
template("third_party") {
|
|
enabled = !defined(invoker.enabled) || invoker.enabled
|
|
third_party_config(target_name + "_public") {
|
|
if (enabled) {
|
|
if (defined(invoker.public_defines)) {
|
|
defines = invoker.public_defines
|
|
}
|
|
include_dirs = invoker.public_include_dirs
|
|
} else {
|
|
not_needed(invoker, "*")
|
|
}
|
|
}
|
|
|
|
# You can't make a static_library() without object files to archive,
|
|
# but we can treat targets without object files as a source_set().
|
|
if (defined(invoker.sources)) {
|
|
_mode = "static_library"
|
|
} else {
|
|
_mode = "source_set"
|
|
}
|
|
|
|
target(_mode, target_name) {
|
|
if (enabled) {
|
|
forward_variables_from(invoker, "*", [ "public_include_dirs" ])
|
|
public_configs = [ ":" + target_name + "_public" ]
|
|
|
|
# Warnings are just noise if we're not maintaining the code.
|
|
if (is_win) {
|
|
cflags = [ "/w" ]
|
|
} else {
|
|
cflags = [ "-w" ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
set_defaults("third_party") {
|
|
configs = default_configs
|
|
if (!is_official_build) {
|
|
# Official builds don't have warnings to begin with.
|
|
configs -= [ "//gn:warnings" ]
|
|
}
|
|
|
|
if (is_debug) {
|
|
configs += [ "//gn:optimize" ]
|
|
}
|
|
|
|
if (sanitize == "ASAN") {
|
|
configs += [ "//gn:recover_pointer_overflow" ]
|
|
}
|
|
}
|
|
|
|
template("system") {
|
|
config(target_name + "_public") {
|
|
forward_variables_from(invoker, "*", [])
|
|
}
|
|
group(target_name) {
|
|
public_configs = [ ":" + target_name + "_public" ]
|
|
}
|
|
}
|