blob: 8a0d56166fdfb7791ca81a1ef08a23b216474f2b [file] [log] [blame]
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//tools/cmc/build/cmc.gni")
import("//tools/cmc/build/expect_includes.gni")
# Compiles a cml file into a cm file.
#
# Parameters
#
# manifest (required)
# [file] The path to the cml file that is to be compiled.
#
# output_name (optional)
# [path] Name for the output.
# If not specified, the target name is used.
#
# check_includes (optional)
# [boolean] Whether to check against expect_includes() in deps.
# Default: true
#
# deps (optional)
# testonly (optional)
# visibility (optional)
template("cm") {
if (!defined(invoker.check_includes) || invoker.check_includes) {
check_includes_target = "${target_name}_check_includes"
cmc_check_includes(check_includes_target) {
forward_variables_from(invoker,
[
"deps",
"manifest",
"testonly",
])
visibility = [ ":*" ]
}
if (!defined(invoker.deps)) {
invoker.deps = []
}
invoker.deps += [ ":" + check_includes_target ]
}
cmc(target_name) {
forward_variables_from(invoker,
[
"deps",
"output_name",
"testonly",
"visibility",
])
if (!defined(output_name)) {
output_name = target_name
}
compiled_output = "${target_out_dir}/${output_name}"
inputs = [ invoker.manifest ]
outputs = [ compiled_output ]
depfile = "${target_out_dir}/${target_name}.d"
args = [
"compile",
rebase_path(inputs[0], root_build_dir),
"--output",
rebase_path(compiled_output, root_build_dir),
"--includepath",
rebase_path("//", root_build_dir),
"--depfile",
rebase_path(depfile, root_build_dir),
]
}
}