123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # Copyright 2015 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- assert(is_win, "This only runs on Windows.")
- # Runs mc.exe over a list of sources. The outputs (a header and rc file) are
- # placed in the target gen dir, and compiled.
- #
- # sources
- # List of message files to process.
- #
- # user_mode_logging (optional bool)
- # Generates user-mode logging code. Defaults to false (no logging code).
- #
- # compile_generated_code (optional, deafults = true)
- # If unset or true, the generated code will be compiled and linked into
- # targets that depend on it. If set to false, the .h and .rc files will only
- # be generated.
- #
- # deps, public_deps, visibility
- # Normal meaning.
- template("message_compiler") {
- if (defined(invoker.compile_generated_code) &&
- !invoker.compile_generated_code) {
- compile_generated_code = false
- action_name = target_name
- } else {
- compile_generated_code = true
- action_name = "${target_name}_mc"
- source_set_name = target_name
- }
- action_foreach(action_name) {
- if (compile_generated_code) {
- visibility = [ ":$source_set_name" ]
- } else {
- forward_variables_from(invoker, [ "visibility" ])
- }
- script = "//build/win/message_compiler.py"
- outputs = [
- "$target_gen_dir/{{source_name_part}}.h",
- "$target_gen_dir/{{source_name_part}}.rc",
- ]
- args = [
- # The first argument is the environment file saved to the build
- # directory. This is required because the Windows toolchain setup saves
- # the VC paths and such so that running "mc.exe" will work with the
- # configured toolchain. This file is in the root build dir.
- "environment.$current_cpu",
- # Where to put the header.
- "-h",
- rebase_path(target_gen_dir, root_build_dir),
- # Where to put the .rc file.
- "-r",
- rebase_path(target_gen_dir, root_build_dir),
- # Input is Unicode.
- "-u",
- ]
- if (defined(invoker.user_mode_logging) && invoker.user_mode_logging) {
- args += [ "-um" ]
- }
- args += [ "{{source}}" ]
- forward_variables_from(invoker,
- [
- "deps",
- "public_deps",
- "sources",
- ])
- }
- if (compile_generated_code) {
- # Compile the generated rc file.
- source_set(source_set_name) {
- forward_variables_from(invoker, [ "visibility" ])
- sources = get_target_outputs(":$action_name")
- deps = [ ":$action_name" ]
- }
- }
- }
|