xref: /aosp_15_r20/external/cronet/build/win/message_compiler.gni (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2015 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Workerassert(is_win, "This only runs on Windows.")
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker# Runs mc.exe over a list of sources. The outputs (a header and rc file) are
8*6777b538SAndroid Build Coastguard Worker# placed in the target gen dir, and compiled.
9*6777b538SAndroid Build Coastguard Worker#
10*6777b538SAndroid Build Coastguard Worker# sources
11*6777b538SAndroid Build Coastguard Worker#   List of message files to process.
12*6777b538SAndroid Build Coastguard Worker#
13*6777b538SAndroid Build Coastguard Worker# user_mode_logging (optional bool)
14*6777b538SAndroid Build Coastguard Worker#   Generates user-mode logging code. Defaults to false (no logging code).
15*6777b538SAndroid Build Coastguard Worker#
16*6777b538SAndroid Build Coastguard Worker# compile_generated_code (optional, deafults = true)
17*6777b538SAndroid Build Coastguard Worker#   If unset or true, the generated code will be compiled and linked into
18*6777b538SAndroid Build Coastguard Worker#   targets that depend on it. If set to false, the .h and .rc files will only
19*6777b538SAndroid Build Coastguard Worker#   be generated.
20*6777b538SAndroid Build Coastguard Worker#
21*6777b538SAndroid Build Coastguard Worker# deps, public_deps, visibility
22*6777b538SAndroid Build Coastguard Worker#   Normal meaning.
23*6777b538SAndroid Build Coastguard Workertemplate("message_compiler") {
24*6777b538SAndroid Build Coastguard Worker  if (defined(invoker.compile_generated_code) &&
25*6777b538SAndroid Build Coastguard Worker      !invoker.compile_generated_code) {
26*6777b538SAndroid Build Coastguard Worker    compile_generated_code = false
27*6777b538SAndroid Build Coastguard Worker    action_name = target_name
28*6777b538SAndroid Build Coastguard Worker  } else {
29*6777b538SAndroid Build Coastguard Worker    compile_generated_code = true
30*6777b538SAndroid Build Coastguard Worker    action_name = "${target_name}_mc"
31*6777b538SAndroid Build Coastguard Worker    source_set_name = target_name
32*6777b538SAndroid Build Coastguard Worker  }
33*6777b538SAndroid Build Coastguard Worker
34*6777b538SAndroid Build Coastguard Worker  action_foreach(action_name) {
35*6777b538SAndroid Build Coastguard Worker    if (compile_generated_code) {
36*6777b538SAndroid Build Coastguard Worker      visibility = [ ":$source_set_name" ]
37*6777b538SAndroid Build Coastguard Worker    } else {
38*6777b538SAndroid Build Coastguard Worker      forward_variables_from(invoker, [ "visibility" ])
39*6777b538SAndroid Build Coastguard Worker    }
40*6777b538SAndroid Build Coastguard Worker
41*6777b538SAndroid Build Coastguard Worker    script = "//build/win/message_compiler.py"
42*6777b538SAndroid Build Coastguard Worker
43*6777b538SAndroid Build Coastguard Worker    outputs = [
44*6777b538SAndroid Build Coastguard Worker      "$target_gen_dir/{{source_name_part}}.h",
45*6777b538SAndroid Build Coastguard Worker      "$target_gen_dir/{{source_name_part}}.rc",
46*6777b538SAndroid Build Coastguard Worker    ]
47*6777b538SAndroid Build Coastguard Worker
48*6777b538SAndroid Build Coastguard Worker    args = [
49*6777b538SAndroid Build Coastguard Worker      # The first argument is the environment file saved to the build
50*6777b538SAndroid Build Coastguard Worker      # directory. This is required because the Windows toolchain setup saves
51*6777b538SAndroid Build Coastguard Worker      # the VC paths and such so that running "mc.exe" will work with the
52*6777b538SAndroid Build Coastguard Worker      # configured toolchain. This file is in the root build dir.
53*6777b538SAndroid Build Coastguard Worker      "environment.$current_cpu",
54*6777b538SAndroid Build Coastguard Worker
55*6777b538SAndroid Build Coastguard Worker      # Where to put the header.
56*6777b538SAndroid Build Coastguard Worker      "-h",
57*6777b538SAndroid Build Coastguard Worker      rebase_path(target_gen_dir, root_build_dir),
58*6777b538SAndroid Build Coastguard Worker
59*6777b538SAndroid Build Coastguard Worker      # Where to put the .rc file.
60*6777b538SAndroid Build Coastguard Worker      "-r",
61*6777b538SAndroid Build Coastguard Worker      rebase_path(target_gen_dir, root_build_dir),
62*6777b538SAndroid Build Coastguard Worker
63*6777b538SAndroid Build Coastguard Worker      # Input is Unicode.
64*6777b538SAndroid Build Coastguard Worker      "-u",
65*6777b538SAndroid Build Coastguard Worker    ]
66*6777b538SAndroid Build Coastguard Worker    if (defined(invoker.user_mode_logging) && invoker.user_mode_logging) {
67*6777b538SAndroid Build Coastguard Worker      args += [ "-um" ]
68*6777b538SAndroid Build Coastguard Worker    }
69*6777b538SAndroid Build Coastguard Worker    args += [ "{{source}}" ]
70*6777b538SAndroid Build Coastguard Worker
71*6777b538SAndroid Build Coastguard Worker    forward_variables_from(invoker,
72*6777b538SAndroid Build Coastguard Worker                           [
73*6777b538SAndroid Build Coastguard Worker                             "deps",
74*6777b538SAndroid Build Coastguard Worker                             "public_deps",
75*6777b538SAndroid Build Coastguard Worker                             "sources",
76*6777b538SAndroid Build Coastguard Worker                           ])
77*6777b538SAndroid Build Coastguard Worker  }
78*6777b538SAndroid Build Coastguard Worker
79*6777b538SAndroid Build Coastguard Worker  if (compile_generated_code) {
80*6777b538SAndroid Build Coastguard Worker    # Compile the generated rc file.
81*6777b538SAndroid Build Coastguard Worker    source_set(source_set_name) {
82*6777b538SAndroid Build Coastguard Worker      forward_variables_from(invoker, [ "visibility" ])
83*6777b538SAndroid Build Coastguard Worker      sources = get_target_outputs(":$action_name")
84*6777b538SAndroid Build Coastguard Worker      deps = [ ":$action_name" ]
85*6777b538SAndroid Build Coastguard Worker    }
86*6777b538SAndroid Build Coastguard Worker  }
87*6777b538SAndroid Build Coastguard Worker}
88