1// Copyright (C) 2016 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package {
16    default_team: "trendy_team_fwk_wifi_hal",
17    default_applicable_licenses: ["system_connectivity_wificond_license"],
18}
19
20// Added automatically by a large-scale-change that took the approach of
21// 'apply every license found to every target'. While this makes sure we respect
22// every license restriction, it may not be entirely correct.
23//
24// e.g. GPL in an MIT project might only apply to the contrib/ directory.
25//
26// Please consider splitting the single license below into multiple licenses,
27// taking care not to lose any license_kind information, and overriding the
28// default license using the 'licenses: [...]' property on targets as needed.
29//
30// For unused files, consider creating a 'filegroup' with "//visibility:private"
31// to attach the license to, and including a comment whether the files may be
32// used in the current project.
33// http://go/android-license-faq
34license {
35    name: "system_connectivity_wificond_license",
36    visibility: [":__subpackages__"],
37    license_kinds: [
38        "SPDX-license-identifier-Apache-2.0",
39        "SPDX-license-identifier-ISC",
40    ],
41    license_text: [
42        "NOTICE",
43    ],
44}
45
46cc_defaults {
47    name: "wificond_defaults",
48
49    cppflags: [
50        "-Wall",
51        "-Werror",
52        "-Wno-unused-parameter",
53    ],
54    include_dirs: ["system/connectivity"],
55}
56
57cc_defaults {
58    name: "wificond_default_libs",
59    defaults: [
60        "keystore2_use_latest_aidl_ndk_shared",
61        "wificond_defaults",
62    ],
63
64    include_dirs: ["system/security/keystore/include"],
65
66    shared_libs: [
67        "libbinder",
68        "libbinder_ndk",
69        "libbase",
70        "libcrypto",
71        "libcutils",
72        "libhidlbase",
73        "libminijail",
74        "libssl",
75        "libutils",
76        "libwifi-system-iface",
77    ],
78    static_libs: [
79        "android.hardware.net.nlinterceptor-V1-ndk",
80        "android.security.legacykeystore-ndk",
81        "[email protected]",
82        "libwificond", // Wificond daemon
83        "libwifikeystorehal", // Wifi Keystore HAL service
84    ],
85}
86
87//
88// wificond daemon.
89//
90cc_binary {
91    name: "wificond",
92    defaults: [
93        "wificond_default_libs",
94    ],
95    init_rc: ["wificond.rc"],
96    srcs: [
97        "main.cpp",
98        "wifi_keystore_hal_connector.cpp",
99    ],
100}
101
102//
103// wificond static library
104//
105cc_library_static {
106    name: "libwificond",
107    defaults: ["wificond_defaults"],
108    srcs: [
109        "ap_interface_binder.cpp",
110        "ap_interface_impl.cpp",
111        "client_interface_binder.cpp",
112        "client_interface_impl.cpp",
113        "device_wiphy_capabilities.cpp",
114        "logging_utils.cpp",
115        "client/native_wifi_client.cpp",
116        "scanning/channel_settings.cpp",
117        "scanning/hidden_network.cpp",
118        "scanning/pno_network.cpp",
119        "scanning/pno_settings.cpp",
120        "scanning/radio_chain_info.cpp",
121        "scanning/scan_result.cpp",
122        "scanning/single_scan_settings.cpp",
123        "scanning/scan_utils.cpp",
124        "scanning/scanner_impl.cpp",
125        "server.cpp",
126    ],
127
128    shared_libs: [
129        "android.hardware.net.nlinterceptor-V1-ndk",
130        "libbase",
131        "libbinder",
132        "libutils",
133        "libwifi-system-iface",
134    ],
135    whole_static_libs: [
136        "libnlinterceptor",
137        "libwificond_ipc",
138        "libwificond_nl",
139        "libwificond_event_loop",
140    ],
141}
142
143//
144// wificond netlink library
145//
146cc_library_static {
147    name: "libwificond_nl",
148    defaults: ["wificond_defaults"],
149    srcs: [
150        "net/mlme_event.cpp",
151        "net/netlink_manager.cpp",
152        "net/netlink_utils.cpp",
153        "net/nl80211_attribute.cpp",
154        "net/nl80211_packet.cpp",
155    ],
156    shared_libs: [
157        "android.hardware.net.nlinterceptor-V1-ndk",
158        "libbase",
159    ],
160    static_libs: [
161        "libnlinterceptor",
162    ],
163}
164
165//
166// wificond event loop library
167//
168cc_library_static {
169    name: "libwificond_event_loop",
170    defaults: ["wificond_defaults"],
171    srcs: ["looper_backed_event_loop.cpp"],
172    whole_static_libs: [
173        "liblog",
174        "libbase",
175    ],
176
177}
178
179//
180// wificond IPC interface library
181//
182cc_library_static {
183    name: "libwificond_ipc",
184    defaults: ["wificond_defaults"],
185    aidl: {
186        local_include_dirs: ["aidl"],
187        export_aidl_headers: true,
188    },
189    export_shared_lib_headers: ["libbinder"],
190    srcs: [
191        "ipc_constants.cpp",
192        ":libwificond_ipc_aidl",
193        "client/native_wifi_client.cpp",
194        "device_wiphy_capabilities.cpp",
195        "scanning/channel_settings.cpp",
196        "scanning/hidden_network.cpp",
197        "scanning/pno_network.cpp",
198        "scanning/pno_settings.cpp",
199        "scanning/radio_chain_info.cpp",
200        "scanning/scan_result.cpp",
201        "scanning/single_scan_settings.cpp",
202    ],
203    shared_libs: [
204        "android.hardware.net.nlinterceptor-V1-ndk",
205        "libbinder",
206    ],
207    static_libs: ["libnlinterceptor"],
208}
209
210filegroup {
211    name: "libwificond_ipc_aidl",
212    srcs: [
213        "aidl/android/net/wifi/nl80211/IApInterface.aidl",
214        "aidl/android/net/wifi/nl80211/IApInterfaceEventCallback.aidl",
215        "aidl/android/net/wifi/nl80211/IClientInterface.aidl",
216        "aidl/android/net/wifi/nl80211/IInterfaceEventCallback.aidl",
217        "aidl/android/net/wifi/nl80211/IPnoScanEvent.aidl",
218        "aidl/android/net/wifi/nl80211/IScanEvent.aidl",
219        "aidl/android/net/wifi/nl80211/ISendMgmtFrameEvent.aidl",
220        "aidl/android/net/wifi/nl80211/IWificond.aidl",
221        "aidl/android/net/wifi/nl80211/IWificondEventCallback.aidl",
222        "aidl/android/net/wifi/nl80211/IWifiScannerImpl.aidl",
223    ],
224    path: "aidl",
225}
226
227//
228// test util library
229//
230cc_library_static {
231    name: "libwificond_test_utils",
232    defaults: ["wificond_defaults"],
233    srcs: [
234        "tests/integration/process_utils.cpp",
235        "tests/shell_utils.cpp",
236    ],
237    shared_libs: ["libbase"],
238
239    whole_static_libs: [
240        "libwificond_ipc",
241        "libwificond_event_loop",
242    ],
243}
244
245//
246// wificond unit tests.
247//
248cc_test {
249    name: "wificond_unit_test",
250    defaults: ["wificond_defaults"],
251    test_suites: ["device-tests"],
252    tidy_timeout_srcs: [
253        "tests/client_interface_impl_unittest.cpp",
254        "tests/netlink_utils_unittest.cpp",
255        "tests/scanner_unittest.cpp",
256        "tests/scan_utils_unittest.cpp",
257        "tests/server_unittest.cpp",
258    ],
259    srcs: [
260        "tests/ap_interface_impl_unittest.cpp",
261        "tests/client_interface_impl_unittest.cpp",
262        "tests/looper_backed_event_loop_unittest.cpp",
263        "tests/main.cpp",
264        "tests/mock_client_interface_impl.cpp",
265        "tests/mock_netlink_manager.cpp",
266        "tests/mock_netlink_utils.cpp",
267        "tests/mock_scan_utils.cpp",
268        "tests/native_wifi_client_unittest.cpp",
269        "tests/netlink_manager_unittest.cpp",
270        "tests/netlink_utils_unittest.cpp",
271        "tests/nl80211_attribute_unittest.cpp",
272        "tests/nl80211_packet_unittest.cpp",
273        "tests/scanner_unittest.cpp",
274        "tests/scan_result_unittest.cpp",
275        "tests/scan_settings_unittest.cpp",
276        "tests/scan_utils_unittest.cpp",
277        "tests/server_unittest.cpp",
278    ],
279
280    static_libs: [
281        "libgmock",
282        "libgtest",
283        "libwifi-system-iface-test",
284        "libwificond",
285        "libwificond_nl",
286    ],
287    shared_libs: [
288        "android.hardware.net.nlinterceptor-V1-ndk",
289        "libbase",
290        "libbinder",
291        "libbinder_ndk",
292        "libcutils",
293        "liblog",
294        "libutils",
295        "libwifi-system-iface",
296    ],
297}
298
299//
300// wificond device integration tests.
301//
302cc_test {
303    name: "wificond_integration_test",
304    defaults: ["wificond_defaults"],
305    srcs: [
306        "tests/integration/ap_interface_test.cpp",
307        "tests/integration/client_interface_test.cpp",
308        "tests/integration/life_cycle_test.cpp",
309        "tests/integration/scanner_test.cpp",
310        "tests/main.cpp",
311        "tests/shell_unittest.cpp",
312    ],
313    shared_libs: [
314        "libbase",
315        "libbinder",
316        "libcutils",
317        "libutils",
318        "libwifi-system-iface",
319    ],
320    static_libs: [
321        "libgmock",
322        "libwificond_ipc",
323        "libwificond_test_utils",
324    ],
325}
326
327cc_fuzz {
328    name: "wificond_service_fuzzer",
329    defaults: [
330        "wificond_default_libs",
331        "service_fuzzer_defaults",
332        "fuzzer_disable_leaks",
333    ],
334    srcs: [
335        "fuzzers/wificond_service_fuzzer.cpp",
336    ],
337    fuzz_config: {
338        triage_assignee: "[email protected]",
339        cc: [
340            "[email protected]",
341            "[email protected]",
342        ],
343    },
344}
345