| # Copyright 2019 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # GN template to generate static library for given Wayland protorol description files. |
| # Parameters: |
| # sources |
| # Wayland protocol description XML file paths. |
| # out_dir (optional) |
| # Directory to output generated source files. Relative to gen/ directory. |
| template("wayland_protocol_library") { |
| forward_variables_from(invoker, [ "out_dir" ]) |
| if (!defined(out_dir)) { |
| out_dir = "." |
| } |
| wayland_dir = "${root_gen_dir}/${out_dir}" |
| |
| generators = [ |
| { |
| subcommand = "code" |
| output_suffix = "-protocol.c" |
| }, |
| { |
| subcommand = "client-header" |
| output_suffix = "-client-protocol.h" |
| }, |
| { |
| subcommand = "server-header" |
| output_suffix = "-server-protocol.h" |
| }, |
| ] |
| generator_actions = [] |
| foreach(g, generators) { |
| action_name = "${target_name}_${g.subcommand}" |
| generator_actions += [ ":" + action_name ] |
| action_foreach(action_name) { |
| sources = invoker.sources |
| script = "//common-mk/file_generator_wrapper.py" |
| output_file = "${wayland_dir}/{{source_name_part}}${g.output_suffix}" |
| outputs = [ output_file ] |
| args = [ |
| "wayland-scanner", |
| g.subcommand, |
| "{{source}}", |
| output_file, |
| ] |
| } |
| } |
| |
| static_library(target_name) { |
| if (defined(invoker.configs)) { |
| configs += invoker.configs |
| } |
| deps = generator_actions |
| sources = [] |
| foreach(t, deps) { |
| sources += get_target_outputs(t) |
| } |
| if (defined(invoker.deps)) { |
| deps += invoker.deps |
| } |
| } |
| } |