# 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) { include_dirs = invoker.public_include_dirs if (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" ] } }