| # Copyright 2016 Google Inc. |
| # |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| declare_args() { |
| third_party_isystem = true |
| } |
| |
| 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 (third_party_isystem) { |
| 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) { |
| # set_defaults(_mode) might not exist or set configs |
| if (!defined(configs)) { |
| configs = [] |
| } |
| if (is_debug) { |
| configs += [ "../../gn/skia:optimize" ] |
| } |
| configs += [ "../../gn/skia:recover_pointer_overflow" ] |
| |
| # "*" clobbers the current scope; append to existing configs |
| forward_variables_from(invoker, |
| "*", |
| [ |
| "public_include_dirs", |
| "configs", |
| ]) |
| if (defined(invoker.configs)) { |
| configs += invoker.configs |
| } |
| public_configs = [ ":" + target_name + "_public" ] |
| |
| # Warnings are just noise if we're not maintaining the code. |
| if (!defined(cflags)) { |
| cflags = [] |
| } |
| if (is_win) { |
| cflags += [ "/w" ] |
| } else { |
| cflags += [ "-w" ] |
| } |
| } |
| } |
| } |
| |
| template("system") { |
| config(target_name + "_public") { |
| forward_variables_from(invoker, "*", []) |
| } |
| group(target_name) { |
| public_configs = [ ":" + target_name + "_public" ] |
| } |
| } |