blob: 524a520f0f9f91b272de6cb72120d9c8dbe5ee92 [file] [log] [blame]
Keigo Okacedea622018-09-03 20:08:05 +09001# Copyright 2018 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//common-mk/pkg_config.gni")
6import("//common-mk/proto_library.gni")
7
8group("all") {
9 deps = [
Garrick Evansaa4a9ed2020-04-30 14:33:23 +090010 ":libpatchpanel",
Garrick Evansaa4a9ed2020-04-30 14:33:23 +090011 ":libpatchpanel-util",
12 ":patchpaneld",
Keigo Okacedea622018-09-03 20:08:05 +090013 ]
Hugo Benichi1661ca02019-10-16 15:36:13 +090014 if (use.fuzzer) {
Taoyu Li906553a2019-10-18 13:44:41 +090015 deps += [
Jie Jiang44dfd0b2020-12-16 18:09:41 +090016 ":counters_service_fuzzer",
Hugo Benichib9b93fe2019-10-25 23:36:01 +090017 ":datapath_fuzzer",
Jason Jeremy Iman1b0faf52020-07-14 22:29:20 +090018 ":firewall_fuzzer",
Taoyu Li906553a2019-10-18 13:44:41 +090019 ":multicast_forwarder_fuzzer",
20 ":ndproxy_fuzzer",
21 ]
Hugo Benichi1661ca02019-10-16 15:36:13 +090022 }
Garrick Evans428e4762018-12-11 15:18:42 +090023 if (use.test) {
Garrick Evansaa4a9ed2020-04-30 14:33:23 +090024 deps += [ ":patchpanel_testrunner" ]
Garrick Evans428e4762018-12-11 15:18:42 +090025 }
Keigo Okacedea622018-09-03 20:08:05 +090026}
27
28pkg_config("target_defaults") {
29 pkg_deps = [
hscham190698a2020-01-17 12:06:33 +090030 "libbrillo",
Qijiang Fanb733c282020-10-23 00:19:47 +090031 "libchrome",
Keigo Okacedea622018-09-03 20:08:05 +090032 "libshill-client",
Qijiang Fand97f9662020-09-10 20:48:04 +090033 "libshill-net",
Garrick Evans08843932019-09-17 14:41:08 +090034 "protobuf-lite",
Jie Jianged0b1cc2020-07-10 15:55:33 +090035 "re2",
Garrick Evans08843932019-09-17 14:41:08 +090036 "system_api",
Jason Jeremy Iman378930a2020-12-11 05:40:08 +090037 "vboot_host",
Keigo Okacedea622018-09-03 20:08:05 +090038 ]
Allen Webb33a2f802019-10-24 16:03:17 -070039 if (use.fuzzer) {
40 pkg_deps += [ "protobuf" ]
41 } else {
42 pkg_deps += [ "protobuf-lite" ]
43 }
Hugo Benichifda77232020-08-21 18:28:15 +090044 defines = [
45 "USE_ARCVM=${use.arcvm}",
46 "USE_JETSTREAM_ROUTING=${use.jetstream_routing}",
47 ]
Keigo Okacedea622018-09-03 20:08:05 +090048}
49
50proto_library("protos") {
51 configs = [ ":target_defaults" ]
52 proto_in_dir = "."
Garrick Evans3388a032020-03-24 11:25:55 +090053 proto_out_dir = "include/patchpanel"
Clark Chung352e61e2020-04-21 18:32:03 +080054 sources = [ "${proto_in_dir}/ipc.proto" ]
Keigo Okacedea622018-09-03 20:08:05 +090055}
56
Garrick Evans4b66f632019-01-24 15:09:16 +090057util_sources = [
Garrick Evans0dbd4182019-03-07 08:38:38 +090058 "address_manager.cc",
Garrick Evans4b66f632019-01-24 15:09:16 +090059 "mac_address_generator.cc",
Hugo Benichi2ac4d072019-05-28 14:51:23 +090060 "net_util.cc",
Garrick Evans1cce71a2019-06-21 10:43:14 +090061 "socket.cc",
Andreea Costinas74f45d22020-03-13 10:29:31 +010062 "socket_forwarder.cc",
Garrick Evans4b66f632019-01-24 15:09:16 +090063 "subnet.cc",
64 "subnet_pool.cc",
65]
66
Garrick Evansaa4a9ed2020-04-30 14:33:23 +090067libpatchpanel_sources = [
Manoj Guptab7553862020-04-23 15:02:41 -070068 "adb_proxy.cc",
69 "arc_service.cc",
70 "broadcast_forwarder.cc",
Jie Jiang31a0b4e2020-07-09 15:06:16 +090071 "counters_service.cc",
Manoj Guptab7553862020-04-23 15:02:41 -070072 "crostini_service.cc",
73 "datapath.cc",
74 "device.cc",
75 "dns/big_endian.cc",
Jason Jeremy Imana21be272020-10-21 17:53:45 +090076 "dns/dns_query.cc",
Manoj Guptab7553862020-04-23 15:02:41 -070077 "dns/dns_response.cc",
Jason Jeremy Imana21be272020-10-21 17:53:45 +090078 "dns/dns_util.cc",
Manoj Guptab7553862020-04-23 15:02:41 -070079 "dns/io_buffer.cc",
Jason Jeremy Iman54c046f2020-06-23 23:12:00 +090080 "firewall.cc",
Manoj Guptab7553862020-04-23 15:02:41 -070081 "helper_process.cc",
82 "manager.cc",
83 "message_dispatcher.cc",
84 "minijailed_process_runner.cc",
85 "multicast_forwarder.cc",
86 "multicast_proxy.cc",
87 "ndproxy.cc",
Jie Jiang01c1a2e2020-04-08 20:58:30 +090088 "network_monitor_service.cc",
Manoj Guptab7553862020-04-23 15:02:41 -070089 "routing_service.cc",
90 "scoped_ns.cc",
91 "shill_client.cc",
92]
93
Garrick Evansaa4a9ed2020-04-30 14:33:23 +090094shared_library("libpatchpanel-util") {
Garrick Evans4b66f632019-01-24 15:09:16 +090095 sources = util_sources
Yi Chou9e956f72020-11-20 21:15:23 +080096 pkg_deps = [
97 "libbrillo",
98 "libchrome",
99 "libshill-client",
100 "libshill-net",
101 "protobuf-lite",
102 "re2",
103 ]
104 libs = [ "system_api" ]
105 if (use.fuzzer) {
106 pkg_deps += [ "protobuf" ]
107 } else {
108 pkg_deps += [ "protobuf-lite" ]
109 }
110 defines = [
111 "USE_ARCVM=${use.arcvm}",
112 "USE_JETSTREAM_ROUTING=${use.jetstream_routing}",
113 ]
Garrick Evans4b66f632019-01-24 15:09:16 +0900114}
115
Garrick Evansaa4a9ed2020-04-30 14:33:23 +0900116static_library("libpatchpanel_test") {
Manoj Guptab7553862020-04-23 15:02:41 -0700117 configs += [ ":target_defaults" ]
118 all_dependent_pkg_deps = [
119 "protobuf",
120 "system_api",
121 ]
Garrick Evansaa4a9ed2020-04-30 14:33:23 +0900122 sources = libpatchpanel_sources
Clark Chung352e61e2020-04-21 18:32:03 +0800123 deps = [ ":protos" ]
Manoj Guptab7553862020-04-23 15:02:41 -0700124}
125
Garrick Evansaa4a9ed2020-04-30 14:33:23 +0900126static_library("libpatchpanel") {
Garrick Evans08843932019-09-17 14:41:08 +0900127 configs += [ ":target_defaults" ]
128 all_dependent_pkg_deps = [
129 "protobuf",
130 "system_api",
131 ]
Garrick Evansaa4a9ed2020-04-30 14:33:23 +0900132 sources = libpatchpanel_sources + util_sources
Clark Chung352e61e2020-04-21 18:32:03 +0800133 deps = [ ":protos" ]
Garrick Evans428e4762018-12-11 15:18:42 +0900134}
135
Garrick Evans635a3f02020-04-22 08:02:02 +0900136executable("patchpaneld") {
Clark Chung352e61e2020-04-21 18:32:03 +0800137 sources = [ "main.cc" ]
Ayato Tokubidef23f12019-10-02 12:21:53 +0900138 configs += [ ":target_defaults" ]
Clark Chung352e61e2020-04-21 18:32:03 +0800139 deps = [ ":libpatchpanel" ]
Garrick Evans428e4762018-12-11 15:18:42 +0900140}
141
Hugo Benichi1661ca02019-10-16 15:36:13 +0900142if (use.fuzzer) {
143 pkg_config("fuzzing_config") {
Qijiang Fanb733c282020-10-23 00:19:47 +0900144 pkg_deps = [ "libchrome-test" ]
Hugo Benichi1661ca02019-10-16 15:36:13 +0900145 }
146
147 executable("multicast_forwarder_fuzzer") {
148 configs += [
149 "//common-mk/common_fuzzer",
150 ":target_defaults",
151 ":fuzzing_config",
152 ]
Clark Chung352e61e2020-04-21 18:32:03 +0800153 sources = [ "multicast_forwarder_fuzzer.cc" ]
154 deps = [ ":libpatchpanel" ]
Hugo Benichi1661ca02019-10-16 15:36:13 +0900155 }
Taoyu Li906553a2019-10-18 13:44:41 +0900156
157 executable("ndproxy_fuzzer") {
158 configs += [
159 "//common-mk/common_fuzzer",
160 ":target_defaults",
161 ":fuzzing_config",
162 ]
Clark Chung352e61e2020-04-21 18:32:03 +0800163 sources = [ "ndproxy_fuzzer.cc" ]
164 deps = [ ":libpatchpanel" ]
Taoyu Li906553a2019-10-18 13:44:41 +0900165 }
Hugo Benichib9b93fe2019-10-25 23:36:01 +0900166
167 executable("datapath_fuzzer") {
168 configs += [
169 "//common-mk/common_fuzzer",
170 ":target_defaults",
171 ":fuzzing_config",
172 ]
Clark Chung352e61e2020-04-21 18:32:03 +0800173 sources = [ "datapath_fuzzer.cc" ]
174 deps = [ ":libpatchpanel" ]
Hugo Benichib9b93fe2019-10-25 23:36:01 +0900175 }
Garrick Evanse1f11c32020-05-21 16:54:06 +0900176
Jason Jeremy Iman1b0faf52020-07-14 22:29:20 +0900177 executable("firewall_fuzzer") {
178 configs += [
179 "//common-mk/common_fuzzer",
180 ":target_defaults",
181 ":fuzzing_config",
182 ]
183 sources = [ "firewall_fuzzer.cc" ]
184 deps = [ ":libpatchpanel" ]
185 }
Jie Jiang44dfd0b2020-12-16 18:09:41 +0900186
187 executable("counters_service_fuzzer") {
188 configs += [
189 "//common-mk/common_fuzzer",
190 ":target_defaults",
191 ":fuzzing_config",
192 ]
193 sources = [ "counters_service_fuzzer.cc" ]
194 deps = [ ":libpatchpanel" ]
195 }
Hugo Benichi1661ca02019-10-16 15:36:13 +0900196}
197
Garrick Evans428e4762018-12-11 15:18:42 +0900198if (use.test) {
199 pkg_config("test_config") {
Qijiang Fanb733c282020-10-23 00:19:47 +0900200 pkg_deps = [ "libchrome-test" ]
Garrick Evans428e4762018-12-11 15:18:42 +0900201 }
202
Garrick Evansaa4a9ed2020-04-30 14:33:23 +0900203 executable("patchpanel_testrunner") {
Garrick Evans428e4762018-12-11 15:18:42 +0900204 sources = [
Garrick Evans0dbd4182019-03-07 08:38:38 +0900205 "address_manager_test.cc",
Garrick Evans54861622019-07-19 09:05:09 +0900206 "arc_service_test.cc",
Jie Jiangcf749152020-07-09 22:20:58 +0900207 "counters_service_test.cc",
Garrick Evansf0ab7132019-06-18 14:50:42 +0900208 "datapath_test.cc",
Jason Jeremy Imana21be272020-10-21 17:53:45 +0900209 "dns/dns_query_test.cc",
210 "dns/dns_response_test.cc",
Jason Jeremy Iman54c046f2020-06-23 23:12:00 +0900211 "firewall_test.cc",
Garrick Evans4b66f632019-01-24 15:09:16 +0900212 "mac_address_generator_test.cc",
Garrick Evans64a2df32018-12-12 16:53:46 +0900213 "minijailed_process_runner_test.cc",
Jason Jeremy Iman54c046f2020-06-23 23:12:00 +0900214 "mock_firewall.cc",
Taoyu Liaa6238b2019-09-06 17:38:52 +0900215 "ndproxy_test.cc",
Hugo Benichi2ac4d072019-05-28 14:51:23 +0900216 "net_util_test.cc",
Jie Jiang01c1a2e2020-04-08 20:58:30 +0900217 "network_monitor_service_test.cc",
Hugo Benichi7d9d8db2020-03-30 15:56:56 +0900218 "routing_service_test.cc",
Garrick Evansf2e11f02018-12-25 15:25:39 +0900219 "shill_client_test.cc",
Andreea Costinas456ee5b2020-09-08 15:11:43 +0200220 "socket_forwarder_test.cc",
Garrick Evans4b66f632019-01-24 15:09:16 +0900221 "subnet_pool_test.cc",
222 "subnet_test.cc",
Garrick Evans428e4762018-12-11 15:18:42 +0900223 ]
Ayato Tokubidef23f12019-10-02 12:21:53 +0900224 configs += [
225 "//common-mk:test",
226 ":target_defaults",
227 ":test_config",
228 ]
Garrick Evans428e4762018-12-11 15:18:42 +0900229 defines = [ "UNIT_TEST" ]
230 deps = [
Jason Jeremy Imanadffbcb2020-08-31 13:21:36 +0900231 ":libpatchpanel-util",
Garrick Evansaa4a9ed2020-04-30 14:33:23 +0900232 ":libpatchpanel_test",
Garrick Evans4b66f632019-01-24 15:09:16 +0900233 "//common-mk/testrunner",
Garrick Evans428e4762018-12-11 15:18:42 +0900234 ]
235 }
236}