skia2/third_party/third_party.gni
Mike Klein 10af5ecfaa use /imsvc with clang-cl where we use -isystem
This should disable warnings from third-party headers
on Clang/Win builds.  So far we've just gotten lucky.

Change-Id: Ieaf459e200925d46d8c65ba8d489db111705b125
Reviewed-on: https://skia-review.googlesource.com/c/191283
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-02-11 18:34:32 +00:00

83 lines
2.0 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") {
enabled = !defined(invoker.enabled) || invoker.enabled
config(target_name + "_public") {
if (enabled) {
cflags = []
if (defined(invoker.public_defines)) {
defines = invoker.public_defines
}
if (is_win && !is_clang) {
include_dirs = invoker.public_include_dirs
} else if (is_win && is_clang) {
foreach(dir, invoker.public_include_dirs) {
cflags += [
"/imsvc",
rebase_path(dir),
]
}
} else {
foreach(dir, invoker.public_include_dirs) {
cflags += [
"-isystem",
rebase_path(dir),
]
}
}
} 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" ]
}
# Don't want to to deal with this (especially /RTCc)
if (sanitize == "MSVC") {
configs -= [ "//gn:msvc_rtc" ]
}
if (is_debug) {
configs += [ "//gn:optimize" ]
}
}
template("system") {
config(target_name + "_public") {
forward_variables_from(invoker, "*", [])
}
group(target_name) {
public_configs = [ ":" + target_name + "_public" ]
}
}