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_applicable_licenses: ["system_connectivity_wificond_license"],
17}
18
19// Added automatically by a large-scale-change that took the approach of
20// 'apply every license found to every target'. While this makes sure we respect
21// every license restriction, it may not be entirely correct.
22//
23// e.g. GPL in an MIT project might only apply to the contrib/ directory.
24//
25// Please consider splitting the single license below into multiple licenses,
26// taking care not to lose any license_kind information, and overriding the
27// default license using the 'licenses: [...]' property on targets as needed.
28//
29// For unused files, consider creating a 'filegroup' with "//visibility:private"
30// to attach the license to, and including a comment whether the files may be
31// used in the current project.
32// http://go/android-license-faq
33license {
34    name: "system_connectivity_wificond_license",
35    visibility: [":__subpackages__"],
36    license_kinds: [
37        "SPDX-license-identifier-Apache-2.0",
38        "SPDX-license-identifier-ISC",
39    ],
40    license_text: [
41        "NOTICE",
42    ],
43}
44
45cc_defaults {
46    name: "wificond_defaults",
47
48    cppflags: [
49        "-Wall",
50        "-Werror",
51        "-Wno-unused-parameter",
52    ],
53    include_dirs: ["system/connectivity"],
54}
55
56//
57// wificond daemon.
58//
59cc_binary {
60    name: "wificond",
61    defaults: ["wificond_defaults"],
62    init_rc: ["wificond.rc"],
63    srcs: [
64	"main.cpp",
65	"wifi_keystore_hal_connector.cpp"
66    ],
67    include_dirs: ["system/security/keystore/include"],
68
69    shared_libs: [
70        "android.system.keystore2-V1-ndk_platform",
71        "android.security.legacykeystore-ndk_platform",
72        "libbinder",
73        "libbinder_ndk",
74        "libbase",
75        "libcrypto",
76        "libcutils",
77        "libhidlbase",
78        "libminijail",
79        "libssl",
80        "libutils",
81        "libwifi-system-iface",
82        "android.system.wifi.keystore@1.0",
83    ],
84    static_libs: [
85        "libwificond", // Wificond daemon
86        "libwifikeystorehal"  // Wifi Keystore HAL service
87    ],
88}
89
90//
91// wificond static library
92//
93cc_library_static {
94    name: "libwificond",
95    defaults: ["wificond_defaults"],
96    srcs: [
97        "ap_interface_binder.cpp",
98        "ap_interface_impl.cpp",
99        "client_interface_binder.cpp",
100        "client_interface_impl.cpp",
101        "device_wiphy_capabilities.cpp",
102        "logging_utils.cpp",
103        "client/native_wifi_client.cpp",
104        "scanning/channel_settings.cpp",
105        "scanning/hidden_network.cpp",
106        "scanning/pno_network.cpp",
107        "scanning/pno_settings.cpp",
108        "scanning/radio_chain_info.cpp",
109        "scanning/scan_result.cpp",
110        "scanning/single_scan_settings.cpp",
111        "scanning/scan_utils.cpp",
112        "scanning/scanner_impl.cpp",
113        "server.cpp",
114    ],
115
116    shared_libs: [
117        "libbase",
118        "libutils",
119        "libwifi-system-iface",
120    ],
121    whole_static_libs: [
122        "libwificond_ipc",
123        "libwificond_nl",
124        "libwificond_event_loop",
125    ],
126}
127
128//
129// wificond netlink library
130//
131cc_library_static {
132    name: "libwificond_nl",
133    defaults: ["wificond_defaults"],
134    srcs: [
135        "net/mlme_event.cpp",
136        "net/netlink_manager.cpp",
137        "net/netlink_utils.cpp",
138        "net/nl80211_attribute.cpp",
139        "net/nl80211_packet.cpp",
140    ],
141    shared_libs: ["libbase"],
142
143}
144
145//
146// wificond event loop library
147//
148cc_library_static {
149    name: "libwificond_event_loop",
150    defaults: ["wificond_defaults"],
151    srcs: ["looper_backed_event_loop.cpp"],
152    whole_static_libs: [
153        "liblog",
154        "libbase",
155        "libutils",
156    ],
157
158}
159
160//
161// wificond IPC interface library
162//
163cc_library_static {
164    name: "libwificond_ipc",
165    defaults: ["wificond_defaults"],
166    aidl: {
167        local_include_dirs: ["aidl"],
168        export_aidl_headers: true,
169    },
170    srcs: [
171        "ipc_constants.cpp",
172        ":libwificond_ipc_aidl",
173        "client/native_wifi_client.cpp",
174        "device_wiphy_capabilities.cpp",
175        "scanning/channel_settings.cpp",
176        "scanning/hidden_network.cpp",
177        "scanning/pno_network.cpp",
178        "scanning/pno_settings.cpp",
179        "scanning/radio_chain_info.cpp",
180        "scanning/scan_result.cpp",
181        "scanning/single_scan_settings.cpp",
182    ],
183    shared_libs: ["libbinder"],
184}
185
186filegroup {
187    name: "libwificond_ipc_aidl",
188    srcs: [
189        "aidl/android/net/wifi/nl80211/IApInterface.aidl",
190        "aidl/android/net/wifi/nl80211/IApInterfaceEventCallback.aidl",
191        "aidl/android/net/wifi/nl80211/IClientInterface.aidl",
192        "aidl/android/net/wifi/nl80211/IInterfaceEventCallback.aidl",
193        "aidl/android/net/wifi/nl80211/IPnoScanEvent.aidl",
194        "aidl/android/net/wifi/nl80211/IScanEvent.aidl",
195        "aidl/android/net/wifi/nl80211/ISendMgmtFrameEvent.aidl",
196        "aidl/android/net/wifi/nl80211/IWificond.aidl",
197        "aidl/android/net/wifi/nl80211/IWificondEventCallback.aidl",
198        "aidl/android/net/wifi/nl80211/IWifiScannerImpl.aidl",
199    ],
200    path: "aidl",
201}
202
203//
204// test util library
205//
206cc_library_static {
207    name: "libwificond_test_utils",
208    defaults: ["wificond_defaults"],
209    srcs: [
210        "tests/integration/process_utils.cpp",
211        "tests/shell_utils.cpp",
212    ],
213    shared_libs: ["libbase"],
214
215    whole_static_libs: [
216        "libwificond_ipc",
217        "libwificond_event_loop",
218    ],
219}
220
221//
222// wificond unit tests.
223//
224cc_test {
225    name: "wificond_unit_test",
226    defaults: ["wificond_defaults"],
227    test_suites: ["device-tests"],
228    srcs: [
229        "tests/ap_interface_impl_unittest.cpp",
230        "tests/client_interface_impl_unittest.cpp",
231        "tests/looper_backed_event_loop_unittest.cpp",
232        "tests/main.cpp",
233        "tests/mock_client_interface_impl.cpp",
234        "tests/mock_netlink_manager.cpp",
235        "tests/mock_netlink_utils.cpp",
236        "tests/mock_scan_utils.cpp",
237        "tests/native_wifi_client_unittest.cpp",
238        "tests/netlink_manager_unittest.cpp",
239        "tests/netlink_utils_unittest.cpp",
240        "tests/nl80211_attribute_unittest.cpp",
241        "tests/nl80211_packet_unittest.cpp",
242        "tests/scanner_unittest.cpp",
243        "tests/scan_result_unittest.cpp",
244        "tests/scan_settings_unittest.cpp",
245        "tests/scan_utils_unittest.cpp",
246        "tests/server_unittest.cpp",
247    ],
248
249    static_libs: [
250        "libgmock",
251        "libgtest",
252        "libwifi-system-iface-test",
253        "libwificond",
254        "libwificond_nl",
255    ],
256    shared_libs: [
257        "libbase",
258        "libbinder",
259        "libcutils",
260        "liblog",
261        "libutils",
262        "libwifi-system-iface",
263    ],
264}
265
266//
267// wificond device integration tests.
268//
269cc_test {
270    name: "wificond_integration_test",
271    defaults: ["wificond_defaults"],
272    srcs: [
273        "tests/integration/ap_interface_test.cpp",
274        "tests/integration/client_interface_test.cpp",
275        "tests/integration/life_cycle_test.cpp",
276        "tests/integration/scanner_test.cpp",
277        "tests/main.cpp",
278        "tests/shell_unittest.cpp",
279    ],
280    shared_libs: [
281        "libbase",
282        "libbinder",
283        "libcutils",
284        "libutils",
285        "libwifi-system-iface",
286    ],
287    static_libs: [
288        "libgmock",
289        "libwificond_ipc",
290        "libwificond_test_utils",
291    ],
292}
293