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