xref: /aosp_15_r20/external/cronet/net/http/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1# Copyright 2017 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/compiled_action.gni")
6import("//net/features.gni")
7
8# Generates a header file based on the real preload list.
9compiled_action("generate_transport_security_state") {
10  tool = "//net/tools/transport_security_state_generator"
11
12  # Inputs in order expected by the command line of the tool.
13  inputs = [
14    "transport_security_state_static.json",
15    "transport_security_state_static_pins.json",
16    "transport_security_state_static.pins",
17    "transport_security_state_static.template",
18  ]
19  outputs = [ "$target_gen_dir/transport_security_state_static.h" ]
20  args =
21      rebase_path(inputs, root_build_dir) + rebase_path(outputs, root_build_dir)
22}
23
24# Generates a header file for use in unittests.
25compiled_action("transport_security_state_unittest_data_default") {
26  tool = "//net/tools/transport_security_state_generator"
27
28  # Inputs in order expected by the command line of the tool.
29  inputs = [
30    "transport_security_state_static_unittest_default.json",
31    "transport_security_state_static_unittest_default_pins.json",
32    "transport_security_state_static_unittest_default.pins",
33    "transport_security_state_static_unittest.template",
34  ]
35  outputs =
36      [ "$target_gen_dir/transport_security_state_static_unittest_default.h" ]
37  args =
38      rebase_path(inputs, root_build_dir) + rebase_path(outputs, root_build_dir)
39}
40
41# Generates a number of header files that are used by integration tests for the
42# generation process and preload format.
43compiled_action_foreach("transport_security_state_unittest_data") {
44  tool = "//net/tools/transport_security_state_generator"
45  sources = [
46    "transport_security_state_static_unittest1.json",
47    "transport_security_state_static_unittest2.json",
48    "transport_security_state_static_unittest3.json",
49  ]
50
51  # Inputs in order expected by the command line of the tool.
52  source_independent_inputs = [
53    "transport_security_state_static_unittest.pins",
54    "transport_security_state_static_unittest.template",
55  ]
56
57  # All possible inputs to ensure correctness when files change.
58  # TODO(crbug/1508893): Use {{source_name_part}}_pins.json.
59  inputs = [
60             "transport_security_state_static_unittest1_pins.json",
61             "transport_security_state_static_unittest2_pins.json",
62             "transport_security_state_static_unittest3_pins.json",
63           ] + source_independent_inputs
64
65  outputs = [ "$target_gen_dir/{{source_name_part}}.h" ]
66  args = [ rebase_path("{{source_name_part}}.json", root_build_dir) ] +
67         [ rebase_path("{{source_name_part}}_pins.json", root_build_dir) ] +
68         rebase_path(source_independent_inputs, root_build_dir) +
69         rebase_path(outputs, root_build_dir)
70}
71
72# This has separated source_set not to let other compiles wait for the
73# generate_transport_security_state task to complete.
74source_set("transport_security_state_generated_files") {
75  # Do not publicize any header to remove build dependency.
76  public = []
77
78  sources = [
79    "transport_security_state.cc",
80    # transport_security_state.h is intentionally specified in net/BUILD.gn
81    # rather than in this source_set. See this review comment thread for
82    # details:
83    # https://chromium-review.googlesource.com/c/chromium/src/+/1460639/comment/b781034b_5794ab47/
84  ]
85
86  deps = [
87    "//build:branding_buildflags",
88    "//net:net_deps",
89    "//net:net_public_deps",
90    "//net/dns",
91  ]
92
93  if (include_transport_security_state_preload_list) {
94    deps += [ ":generate_transport_security_state" ]
95  }
96}
97