• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#Copyright (c) 2021-2023 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14if (defined(ohos_lite)) {
15  import("//build/lite/config/component/lite_component.gni")
16} else {
17  import("//build/ohos.gni")
18}
19
20import("//third_party/wpa_supplicant/wpa_supplicant-2.9_standard/wpa.gni")
21import(
22    "//third_party/wpa_supplicant/wpa_supplicant-2.9_standard/wpa_vendor_ext.gni")
23
24declare_args() {
25  wpa_supplicant_driver_nl80211_hisi = false
26  wpa_supplicant_driver_nl80211 = false
27  wpa_supplicant_ohos_certmgr = true
28  wpa_supplicant_ohos_eapauth = true
29  wpa_supplicant_config_hilog = true
30  wpa_supplicant_config_openssl = true
31  wpa_supplicant_config_wfd = true
32  wpa_supplicant_config_mlo = false
33  wpa_supplicant_config_okc_roam = false
34  wpa_supplicant_config_ext_auth = false
35}
36
37if (wpa_supplicant_ohos_certmgr) {
38  cert_manager_sources = [
39    "$WPA_ROOT_DIR/wpa_supplicant_lib/cert_mgr_deps/src/cert_manager_api.c",
40    "$WPA_ROOT_DIR/wpa_supplicant_lib/cert_mgr_deps/src/cm_ipc_client.c",
41    "$WPA_ROOT_DIR/wpa_supplicant_lib/cert_mgr_deps/src/cm_ipc_client_serialization.c",
42    "$WPA_ROOT_DIR/wpa_supplicant_lib/cert_mgr_deps/src/cm_load_sa.cpp",
43    "$WPA_ROOT_DIR/wpa_supplicant_lib/cert_mgr_deps/src/cm_mem.c",
44    "$WPA_ROOT_DIR/wpa_supplicant_lib/cert_mgr_deps/src/cm_param.c",
45    "$WPA_ROOT_DIR/wpa_supplicant_lib/cert_mgr_deps/src/cm_request.cpp",
46  ]
47
48  cert_manager_include_dirs =
49      [ "$WPA_ROOT_DIR/wpa_supplicant_lib/cert_mgr_deps/include" ]
50
51  cert_manager_external_deps = [
52    "c_utils:utils",
53    "ipc:ipc_single",
54    "openssl:libcrypto_shared",
55    "samgr:samgr_proxy",
56  ]
57}
58
59if (wpa_supplicant_driver_nl80211_hisi) {
60  CONFIG_HISI = "true"
61} else {
62  CONFIG_HISI = "false"
63}
64if (wpa_supplicant_driver_nl80211) {
65  CONFIG_DRIVER = "nl80211"
66} else {
67  CONFIG_DRIVER = "hdf"
68}
69if (wpa_supplicant_ohos_eapauth) {
70  CONFIG_EAPAUTH = "true"
71} else {
72  CONFIG_EAPAUTH = "false"
73}
74if (wpa_supplicant_config_mlo) {
75  CONFIG_MLO = "true"
76} else {
77  CONFIG_MLO = "false"
78}
79
80CONFIG_OS = "unix"
81CONFIG_ELOOP = "eloop"
82if ("${CONFIG_DRIVER}" == "nl80211") {
83  CONFIG_L2_PACKET = "linux"
84} else {
85  CONFIG_L2_PACKET = "rtos"
86}
87
88CONFIG_MAIN = "main"
89
90config("wpa_warnings") {
91  cflags = [ "-Wno-error=sign-compare" ]
92  if (wpa_supplicant_config_ext_auth) {
93    cflags += [ "-DEXT_AUTHENTICATION_SUPPORT" ]
94  }
95  ldflags = [
96    "-flto",
97    "-fsanitize=cfi",
98    "-Wl,-plugin-opt,O1",
99  ]
100}
101
102wpa_client_base_sources = [
103  "$WPA_ROOT_DIR/src/common/wpa_ctrl.c",
104  "$WPA_ROOT_DIR/src/utils/common.c",
105  "$WPA_ROOT_DIR/src/utils/os_${CONFIG_OS}.c",
106  "$WPA_ROOT_DIR/src/utils/wpa_debug.c",
107]
108
109wpa_client_base_include_dirs = [
110  "$WPA_ROOT_DIR/src",
111  "$WPA_ROOT_DIR/src/utils",
112  "$WPA_ROOT_DIR/src/drivers",
113  "$WPA_ROOT_DIR/wpa_supplicant",
114  "$WPA_ROOT_DIR/build/include",
115]
116
117wpa_client_vendor_base_include_dirs = [
118  "$WPA_ROOT_DIR/src",
119  "$WPA_ROOT_DIR/src/utils",
120  "$WPA_ROOT_DIR/src/drivers",
121  "$WPA_ROOT_DIR/wpa_supplicant",
122  "$WPA_ROOT_DIR/build/include",
123]
124
125config("wpa_base_public_config") {
126  include_dirs = [
127    "$WPA_ROOT_DIR/src",
128    "$WPA_ROOT_DIR/src/common",
129    "$WPA_ROOT_DIR/src/utils",
130    "$WPA_ROOT_DIR/wpa_supplicant",
131    "$WPA_ROOT_DIR/hostapd",
132    "$WPA_ROOT_DIR/wpa_supplicant_lib",
133  ]
134}
135
136wpa_client_base_cflags = [
137  "-UANDROID",
138  "-fsigned-char",
139  "-DCONFIG_IEEE80211W",
140  "-DCONFIG_IEEE80211R",
141  "-DCONFIG_NO_VLAN",
142  "-DCONFIG_NO_RADIUS",
143  "-DCONFIG_NO_RANDOM_POOL",
144  "-DCONFIG_SHA256",
145  "-DCONFIG_INTERNAL_LIBTOMMATH",
146  "-DCONFIG_INTERNAL_SHA384",
147  "-DCONFIG_INTERNAL_SHA512",
148  "-DCONFIG_CTRL_IFACE",
149  "-DCONFIG_IBSS_RSN",
150  "-DIEEE8021X_EAPOL",
151  "-DCONFIG_BACEND_FILE",
152  "-DCONFIG_NO_CONFIG_BLOBS",
153  "-DUSERSPACE_CLIENT_SUPPORT",
154  "-DCONFIG_DEBUG_FILE",
155  "-DCONFIG_OPEN_HARMONY_PATCH",
156]
157
158ohos_shared_library("wpa_client") {
159  sanitize = {
160    cfi = true
161    cfi_cross_dso = true
162    debug = false
163  }
164
165  output_name = "wpa_client"
166  sources = wpa_client_base_sources
167
168  include_dirs = wpa_client_base_include_dirs
169
170  cflags = wpa_client_base_cflags
171  if (wpa_supplicant_config_ext_auth) {
172    cflags += [ "-DEXT_AUTHENTICATION_SUPPORT" ]
173  }
174  if ("${CONFIG_CTRL_IFACE}" == "udp") {
175    cflags += [ "-DCONFIG_CTRL_IFACE_UDP" ]
176  } else {
177    cflags += [ "-DCONFIG_CTRL_IFACE_UNIX" ]
178  }
179
180  external_deps = [ "init:libbegetutil" ]
181  if (wpa_supplicant_config_hilog) {
182    external_deps += [ "hilog:libhilog" ]
183  }
184  if ("${CONFIG_DRIVER}" == "nl80211") {
185    include_dirs += [ "$WPA_ROOT_DIR/libnl/include/libnl3" ]
186    cflags += [
187      "-DCONFIG_DRIVER_NL80211",
188      "-DCONFIG_LIBNL32",
189    ]
190  } else {
191    cflags += [
192      "-DCONFIG_DRIVER_HDF",
193      "-DCONFIG_OHOS_P2P",
194    ]
195  }
196  public_configs = [ ":wpa_base_public_config" ]
197  configs = [ ":wpa_warnings" ]
198  part_name = "wpa_supplicant"
199  subsystem_name = "thirdparty"
200  install_images = [ "system" ]
201}
202
203ohos_shared_library("wpa_client_vendor") {
204  sanitize = {
205    cfi = true
206    cfi_cross_dso = true
207    debug = false
208  }
209
210  output_name = "wpa_client_vendor"
211  sources = wpa_client_base_sources
212
213  include_dirs = wpa_client_vendor_base_include_dirs
214
215  cflags = wpa_client_base_cflags
216  if (wpa_supplicant_config_ext_auth) {
217    cflags += [ "-DEXT_AUTHENTICATION_SUPPORT" ]
218  }
219  if ("${CONFIG_CTRL_IFACE}" == "udp") {
220    cflags += [ "-DCONFIG_CTRL_IFACE_UDP" ]
221  } else {
222    cflags += [ "-DCONFIG_CTRL_IFACE_UNIX" ]
223  }
224
225  external_deps = [ "init:libbegetutil" ]
226  if (wpa_supplicant_config_hilog) {
227    external_deps += [ "hilog:libhilog" ]
228  }
229  if ("${CONFIG_DRIVER}" == "nl80211") {
230    include_dirs += [ "$WPA_ROOT_DIR/libnl/include/libnl3" ]
231    cflags += [
232      "-DCONFIG_DRIVER_NL80211",
233      "-DCONFIG_LIBNL32",
234    ]
235  } else {
236    cflags += [
237      "-DCONFIG_DRIVER_HDF",
238      "-DCONFIG_OHOS_P2P",
239    ]
240  }
241  public_configs = [ ":wpa_base_public_config" ]
242  configs = [ ":wpa_warnings" ]
243  part_name = "wpa_supplicant"
244  subsystem_name = "thirdparty"
245  install_images = [
246    chipset_base_dir,
247    updater_vendor_base_dir
248  ]
249}
250
251wpa_base_sources = [
252  # wpa & hostapd
253  "$WPA_ROOT_DIR/hostapd/ap_config_file.c",
254  "$WPA_ROOT_DIR/hostapd/ap_ctrl_iface.c",
255  "$WPA_ROOT_DIR/hostapd/ap_eap_register.c",
256
257  # hostapd
258  "$WPA_ROOT_DIR/hostapd/ap_main.c",
259  "$WPA_ROOT_DIR/src/ap/ap_config.c",
260  "$WPA_ROOT_DIR/src/ap/ap_drv_ops.c",
261  "$WPA_ROOT_DIR/src/ap/ap_list.c",
262  "$WPA_ROOT_DIR/src/ap/ap_mlme.c",
263  "$WPA_ROOT_DIR/src/ap/ap_rrm.c",
264  "$WPA_ROOT_DIR/src/ap/authsrv.c",
265  "$WPA_ROOT_DIR/src/ap/beacon.c",
266  "$WPA_ROOT_DIR/src/ap/bss_load.c",
267  "$WPA_ROOT_DIR/src/ap/comeback_token.c",
268  "$WPA_ROOT_DIR/src/ap/ctrl_iface_ap.c",
269  "$WPA_ROOT_DIR/src/ap/dfs.c",
270  "$WPA_ROOT_DIR/src/ap/drv_callbacks.c",
271  "$WPA_ROOT_DIR/src/ap/eap_user_db.c",
272  "$WPA_ROOT_DIR/src/ap/hostapd.c",
273  "$WPA_ROOT_DIR/src/ap/hw_features.c",
274  "$WPA_ROOT_DIR/src/ap/ieee802_11.c",
275  "$WPA_ROOT_DIR/src/ap/ieee802_11_auth.c",
276  "$WPA_ROOT_DIR/src/ap/ieee802_11_ht.c",
277  "$WPA_ROOT_DIR/src/ap/ieee802_11_shared.c",
278  "$WPA_ROOT_DIR/src/ap/ieee802_1x.c",
279  "$WPA_ROOT_DIR/src/ap/neighbor_db.c",
280  "$WPA_ROOT_DIR/src/ap/pmksa_cache_auth.c",
281  "$WPA_ROOT_DIR/src/ap/preauth_auth.c",
282  "$WPA_ROOT_DIR/src/ap/sta_info.c",
283  "$WPA_ROOT_DIR/src/ap/tkip_countermeasures.c",
284  "$WPA_ROOT_DIR/src/ap/utils.c",
285  "$WPA_ROOT_DIR/src/ap/wmm.c",
286  "$WPA_ROOT_DIR/src/ap/wpa_auth.c",
287  "$WPA_ROOT_DIR/src/ap/wpa_auth_glue.c",
288  "$WPA_ROOT_DIR/src/ap/wpa_auth_ie.c",
289  "$WPA_ROOT_DIR/src/common/ctrl_iface_common.c",
290  "$WPA_ROOT_DIR/src/common/hw_features_common.c",
291  "$WPA_ROOT_DIR/src/common/ieee802_11_common.c",
292  "$WPA_ROOT_DIR/src/common/ptksa_cache.c",
293  "$WPA_ROOT_DIR/src/common/wpa_common.c",
294  "$WPA_ROOT_DIR/src/crypto/aes-internal.c",
295  "$WPA_ROOT_DIR/src/crypto/aes-omac1.c",
296  "$WPA_ROOT_DIR/src/crypto/sha1-prf.c",
297  "$WPA_ROOT_DIR/src/crypto/sha256-prf.c",
298  "$WPA_ROOT_DIR/src/drivers/driver_common.c",
299  "$WPA_ROOT_DIR/src/drivers/drivers.c",
300  "$WPA_ROOT_DIR/src/eap_common/eap_common.c",
301  "$WPA_ROOT_DIR/src/eap_peer/eap.c",
302  "$WPA_ROOT_DIR/src/eap_peer/eap_methods.c",
303  "$WPA_ROOT_DIR/src/eap_server/eap_server.c",
304  "$WPA_ROOT_DIR/src/eap_server/eap_server_identity.c",
305  "$WPA_ROOT_DIR/src/eap_server/eap_server_methods.c",
306  "$WPA_ROOT_DIR/src/eapol_auth/eapol_auth_sm.c",
307  "$WPA_ROOT_DIR/src/eapol_supp/eapol_supp_sm.c",
308  "$WPA_ROOT_DIR/src/l2_packet/l2_packet_${CONFIG_L2_PACKET}.c",
309  "$WPA_ROOT_DIR/src/pasn/pasn_common.c",
310  "$WPA_ROOT_DIR/src/pasn/pasn_responder.c",
311  "$WPA_ROOT_DIR/src/rsn_supp/pmksa_cache.c",
312  "$WPA_ROOT_DIR/src/rsn_supp/preauth.c",
313  "$WPA_ROOT_DIR/src/rsn_supp/wpa.c",
314  "$WPA_ROOT_DIR/src/rsn_supp/wpa_ft.c",
315  "$WPA_ROOT_DIR/src/rsn_supp/wpa_i.h",
316  "$WPA_ROOT_DIR/src/rsn_supp/wpa_ie.c",
317  "$WPA_ROOT_DIR/src/utils/${CONFIG_ELOOP}.c",
318  "$WPA_ROOT_DIR/src/utils/bitfield.c",
319  "$WPA_ROOT_DIR/src/utils/common.c",
320  "$WPA_ROOT_DIR/src/utils/ip_addr.c",
321  "$WPA_ROOT_DIR/src/utils/os_${CONFIG_OS}.c",
322  "$WPA_ROOT_DIR/src/utils/radiotap.c",
323  "$WPA_ROOT_DIR/src/utils/wpa_debug.c",
324  "$WPA_ROOT_DIR/src/utils/wpabuf.c",
325  "$WPA_ROOT_DIR/wpa_supplicant/${CONFIG_MAIN}.c",
326  "$WPA_ROOT_DIR/wpa_supplicant/bss.c",
327  "$WPA_ROOT_DIR/wpa_supplicant/bssid_ignore.c",
328
329  # wpa_supplicant
330  "$WPA_ROOT_DIR/src/crypto/sha384-kdf.c",
331  "$WPA_ROOT_DIR/src/crypto/sha384-prf.c",
332  "$WPA_ROOT_DIR/wpa_supplicant/config.c",
333  "$WPA_ROOT_DIR/wpa_supplicant/config_file.c",
334  "$WPA_ROOT_DIR/wpa_supplicant/ctrl_iface.c",
335  "$WPA_ROOT_DIR/wpa_supplicant/ctrl_iface_${CONFIG_CTRL_IFACE}.c",
336  "$WPA_ROOT_DIR/wpa_supplicant/eap_register.c",
337  "$WPA_ROOT_DIR/wpa_supplicant/events.c",
338  "$WPA_ROOT_DIR/wpa_supplicant/ibss_rsn.c",
339  "$WPA_ROOT_DIR/wpa_supplicant/notify.c",
340  "$WPA_ROOT_DIR/wpa_supplicant/op_classes.c",
341  "$WPA_ROOT_DIR/wpa_supplicant/robust_av.c",
342  "$WPA_ROOT_DIR/wpa_supplicant/rrm.c",
343  "$WPA_ROOT_DIR/wpa_supplicant/scan.c",
344  "$WPA_ROOT_DIR/wpa_supplicant/wmm_ac.c",
345  "$WPA_ROOT_DIR/wpa_supplicant/wpa_supplicant.c",
346  "$WPA_ROOT_DIR/wpa_supplicant/wpas_glue.c",
347
348  #sae
349  "$WPA_ROOT_DIR/src/common/sae.c",
350  "$WPA_ROOT_DIR/wpa_supplicant/sme.c",
351
352  #p2p
353  "$WPA_ROOT_DIR/src/ap/p2p_hostapd.c",
354  "$WPA_ROOT_DIR/src/ap/wps_hostapd.c",
355  "$WPA_ROOT_DIR/src/common/dragonfly.c",
356  "$WPA_ROOT_DIR/src/common/gas.c",
357  "$WPA_ROOT_DIR/src/crypto/crypto_openssl.c",
358  "$WPA_ROOT_DIR/src/crypto/dh_groups.c",
359  "$WPA_ROOT_DIR/src/crypto/fips_prf_openssl.c",
360  "$WPA_ROOT_DIR/src/crypto/ms_funcs.c",
361  "$WPA_ROOT_DIR/src/crypto/sha1-tlsprf.c",
362  "$WPA_ROOT_DIR/src/crypto/sha256-kdf.c",
363  "$WPA_ROOT_DIR/src/crypto/tls_openssl.c",
364  "$WPA_ROOT_DIR/src/crypto/tls_openssl_ocsp.c",
365  "$WPA_ROOT_DIR/src/eap_common/chap.c",
366  "$WPA_ROOT_DIR/src/eap_common/eap_peap_common.c",
367  "$WPA_ROOT_DIR/src/eap_common/eap_pwd_common.c",
368  "$WPA_ROOT_DIR/src/eap_common/eap_sim_common.c",
369  "$WPA_ROOT_DIR/src/eap_common/eap_wsc_common.c",
370  "$WPA_ROOT_DIR/src/eap_common/ext_authentication.c",
371  "$WPA_ROOT_DIR/src/eap_peer/eap_aka.c",
372  "$WPA_ROOT_DIR/src/eap_peer/eap_gtc.c",
373  "$WPA_ROOT_DIR/src/eap_peer/eap_mschapv2.c",
374  "$WPA_ROOT_DIR/src/eap_peer/eap_peap.c",
375  "$WPA_ROOT_DIR/src/eap_peer/eap_pwd.c",
376  "$WPA_ROOT_DIR/src/eap_peer/eap_sim.c",
377  "$WPA_ROOT_DIR/src/eap_peer/eap_tls.c",
378  "$WPA_ROOT_DIR/src/eap_peer/eap_tls_common.c",
379  "$WPA_ROOT_DIR/src/eap_peer/eap_ttls.c",
380  "$WPA_ROOT_DIR/src/eap_peer/eap_wsc.c",
381  "$WPA_ROOT_DIR/src/eap_peer/mschapv2.c",
382  "$WPA_ROOT_DIR/src/eap_server/eap_server_wsc.c",
383  "$WPA_ROOT_DIR/src/p2p/p2p.c",
384  "$WPA_ROOT_DIR/src/p2p/p2p_build.c",
385  "$WPA_ROOT_DIR/src/p2p/p2p_dev_disc.c",
386  "$WPA_ROOT_DIR/src/p2p/p2p_go_neg.c",
387  "$WPA_ROOT_DIR/src/p2p/p2p_group.c",
388  "$WPA_ROOT_DIR/src/p2p/p2p_invitation.c",
389  "$WPA_ROOT_DIR/src/p2p/p2p_parse.c",
390  "$WPA_ROOT_DIR/src/p2p/p2p_pd.c",
391  "$WPA_ROOT_DIR/src/p2p/p2p_sd.c",
392  "$WPA_ROOT_DIR/src/p2p/p2p_utils.c",
393  "$WPA_ROOT_DIR/src/tls/bignum.c",
394  "$WPA_ROOT_DIR/src/utils/base64.c",
395  "$WPA_ROOT_DIR/src/utils/config.c",
396  "$WPA_ROOT_DIR/src/utils/crc32.c",
397  "$WPA_ROOT_DIR/src/utils/uuid.c",
398  "$WPA_ROOT_DIR/src/wps/wps.c",
399  "$WPA_ROOT_DIR/src/wps/wps_attr_build.c",
400  "$WPA_ROOT_DIR/src/wps/wps_attr_parse.c",
401  "$WPA_ROOT_DIR/src/wps/wps_attr_process.c",
402  "$WPA_ROOT_DIR/src/wps/wps_common.c",
403  "$WPA_ROOT_DIR/src/wps/wps_dev_attr.c",
404  "$WPA_ROOT_DIR/src/wps/wps_enrollee.c",
405  "$WPA_ROOT_DIR/src/wps/wps_registrar.c",
406  "$WPA_ROOT_DIR/wpa_supplicant/ap.c",
407  "$WPA_ROOT_DIR/wpa_supplicant/gas_query.c",
408  "$WPA_ROOT_DIR/wpa_supplicant/offchannel.c",
409  "$WPA_ROOT_DIR/wpa_supplicant/p2p_supplicant.c",
410  "$WPA_ROOT_DIR/wpa_supplicant/p2p_supplicant_sd.c",
411  "$WPA_ROOT_DIR/wpa_supplicant/wps_supplicant.c",
412  "$WPA_ROOT_DIR/wpa_supplicant_lib/wpa_magiclink.c",
413]
414
415if ("${CONFIG_EAPAUTH}" == "true") {
416  wpa_base_sources += [
417    "$WPA_ROOT_DIR/src/crypto/aes-encblock.c",
418    "$WPA_ROOT_DIR/src/crypto/milenage.c",
419  ]
420}
421
422if (wpa_supplicant_config_wfd) {
423  wpa_base_sources += [ "$WPA_ROOT_DIR/wpa_supplicant/wifi_display.c" ]
424}
425
426wpa_base_include_dirs = [
427  "$WPA_ROOT_DIR/src",
428  "$WPA_ROOT_DIR/src/ap",
429  "$WPA_ROOT_DIR/src/common",
430  "$WPA_ROOT_DIR/src/utils",
431  "$WPA_ROOT_DIR/src/drivers",
432  "$WPA_ROOT_DIR/src/pasn",
433  "$WPA_ROOT_DIR/wpa_supplicant",
434  "$WPA_ROOT_DIR/build/include",
435  "$WPA_ROOT_DIR/wpa_supplicant_lib",
436  "$WPA_ROOT_DIR/src/crypto",
437  "$WPA_ROOT_DIR/src/eap_common",
438]
439
440if (wpa_supplicant_vendor_ext) {
441  wpa_base_include_dirs += wpa_vendor_ext_inc_path
442}
443
444if (wpa_supplicant_vendor_ext == false || wpa_supplicant_wapi == false) {
445  wpa_base_include_dirs += [ "$WPA_ROOT_DIR/wpa_supplicant/wapi" ]
446  wpa_base_sources += [ "$WPA_ROOT_DIR/wpa_supplicant/wapi/wapi_asue_i.c" ]
447}
448
449ohos_shared_library("wpa") {
450  version_script = "libwpa.map.txt"
451  sanitize = {
452    cfi = true
453    cfi_cross_dso = true
454    debug = false
455  }
456  output_name = "wpa"
457  sources = wpa_base_sources
458
459  include_dirs = wpa_base_include_dirs
460  include_dirs += [ "hostapd/ap_ctrl_iface.h" ]
461
462  cflags = [
463    "-UANDROID",
464    "-fsigned-char",
465    "-DCONFIG_IEEE80211W",
466    "-DCONFIG_IEEE80211R",
467    "-DCONFIG_NO_VLAN",
468    "-DCONFIG_NO_RADIUS",
469    "-DCONFIG_NO_RANDOM_POOL",
470    "-DCONFIG_SHA256",
471    "-DCONFIG_INTERNAL_LIBTOMMATH",
472    "-DCONFIG_INTERNAL_SHA384",
473    "-DCONFIG_INTERNAL_SHA512",
474    "-DCONFIG_CTRL_IFACE",
475    "-DCONFIG_IBSS_RSN",
476    "-DIEEE8021X_EAPOL",
477    "-DUSERSPACE_CLIENT_SUPPORT",
478    "-DCONFIG_BACKEND_FILE",
479    "-DCONFIG_NO_CONFIG_BLOBS",
480    "-DCONFIG_NO_ACCOUNTING",
481    "-DEAP_SERVER_IDENTITY",
482    "-DCONFIG_IEEE80211N",
483    "-DHOSTAPD",
484    "-DNEED_AP_MLME",
485    "-DCONFIG_WPS",
486    "-DCONFIG_AP",
487    "-DCONFIG_P2P",
488    "-DEAP_WSC",
489    "-DEAP_SERVER_WSC",
490    "-DEAP_SERVER",
491    "-DCONFIG_GAS",
492    "-DCONFIG_OFFCHANNEL",
493    "-DCONFIG_MAGICLINK",
494    "-DCONFIG_MAGICLINK_PC",
495    "-DCONFIG_OPEN_HARMONY_PATCH",
496    "-DEAP_MSCHAPV2",
497    "-DEAP_TLS",
498    "-DEAP_PEAP",
499    "-DEAP_TTLS",
500    "-DEAP_SIM",
501    "-DEAP_PWD",
502    "-DEAP_MSCHAPv2",
503    "-DCONFIG_SHA256",
504    "-DCONFIG_ECC",
505    "-DEAP_AKA",
506    "-DEAP_AKA_PRIME",
507    "-DEAP_TLS_OPENSSL",
508    "-DCONFIG_SAE",
509    "-DCONFIG_SUITEB192",
510    "-DCONFIG_SHA384",
511    "-DCONFIG_SUITEB",
512    "-DCONFIG_SME",
513    "-DCONFIG_WEP",
514    "-DPKCS12_FUNCS",
515    "-DEAP_GTC",
516    "-DCONFIG_LIBWPA_VENDOR",
517    "-DCONFIG_P2P_USER_REJECT",
518    "-DCONFIG_HUKS_ENCRYPTION_SUPPORT",
519  ]
520  if (wpa_supplicant_config_ext_auth) {
521    cflags += [ "-DEXT_AUTHENTICATION_SUPPORT" ]
522  }
523  if ("${CONFIG_CTRL_IFACE}" == "udp") {
524    cflags += [ "-DCONFIG_CTRL_IFACE_UDP" ]
525  } else {
526    cflags += [ "-DCONFIG_CTRL_IFACE_UNIX" ]
527  }
528
529  if ("${CONFIG_MLO}" == "true") {
530    cflags += [ "-DCONFIG_MLD_PATCH" ]
531  }
532
533  if (wpa_supplicant_config_wfd) {
534    cflags += [ "-DCONFIG_WIFI_DISPLAY" ]
535  }
536
537  if (wpa_supplicant_config_okc_roam) {
538    cflags += [ "-DCONFIG_OKC_ROAM" ]
539  }
540
541  defines = [
542    "TLS_DEFAULT_CIPHERS = \"DEFAULT:!EXP:!LOW\"",
543    "OPENSSL_SUPPRESS_DEPRECATED",
544  ]
545
546  external_deps = [ "bounds_checking_function:libsec_static" ]
547  if (wpa_supplicant_config_openssl) {
548    external_deps += [
549      "openssl:libcrypto_shared",
550      "openssl:libssl_shared",
551    ]
552  }
553  external_deps += [
554    "drivers_peripheral_wlan:hostapd_hdi_client",
555    "drivers_peripheral_wlan:wifi_driver_client",
556    "drivers_peripheral_wlan:wpa_hdi_client",
557    "huks:libhukssdk",
558    "init:libbegetutil",
559  ]
560  if (wpa_supplicant_config_hilog) {
561    external_deps += [ "hilog:libhilog" ]
562  }
563  if (wpa_supplicant_config_ext_auth) {
564    cflags += [ "-DCONFIG_DRIVER_WIRED" ]
565    sources += [
566      "$WPA_ROOT_DIR/src/drivers/driver_wired.c",
567      "$WPA_ROOT_DIR/src/drivers/driver_wired_common.c",
568    ]
569    external_deps += [ "drivers_peripheral_ethernet:ethernet_hdi_client" ]
570  }
571
572  if ("${CONFIG_DRIVER}" == "nl80211") {
573    sources += [
574      "$WPA_ROOT_DIR/src/ap/ieee802_11_he.c",
575      "$WPA_ROOT_DIR/src/ap/ieee802_11_vht.c",
576      "$WPA_ROOT_DIR/src/drivers/driver_nl80211.c",
577      "$WPA_ROOT_DIR/src/drivers/driver_nl80211_capa.c",
578      "$WPA_ROOT_DIR/src/drivers/driver_nl80211_event.c",
579      "$WPA_ROOT_DIR/src/drivers/driver_nl80211_monitor.c",
580      "$WPA_ROOT_DIR/src/drivers/driver_nl80211_scan.c",
581      "$WPA_ROOT_DIR/src/drivers/linux_ioctl.c",
582      "$WPA_ROOT_DIR/src/drivers/netlink.c",
583      "$WPA_ROOT_DIR/src/drivers/rfkill.c",
584    ]
585    include_dirs += [
586      "$WPA_ROOT_DIR/libnl/include/libnl3",
587      "$WPA_ROOT_DIR/wpa_supplicant_lib",
588    ]
589
590    cflags += [
591      "-DCONFIG_DRIVER_NL80211",
592      "-DCONFIG_LIBNL32",
593      "-DCONFIG_LIBNL20",
594      "-DCONFIG_DEBUG_FILE",
595      "-DCONFIG_IEEE80211AC",
596      "-DCONFIG_IEEE80211AX",
597    ]
598    if (wpa_supplicant_ieee80211be) {
599      sources += [ "$WPA_ROOT_DIR/src/ap/ieee802_11_eht.c" ]
600      cflags += [ "-DCONFIG_IEEE80211BE" ]
601    }
602    external_deps += [ "libnl:libnl_share" ]
603  } else {
604    sources += [
605      "$WPA_ROOT_DIR/src/drivers/wpa_hal.c",
606      "$WPA_ROOT_DIR/src/drivers/wpa_hal_event.c",
607    ]
608    cflags += [
609      "-DCONFIG_DRIVER_HDF",
610      "-DCONFIG_OHOS_P2P",
611    ]
612  }
613  if ("${CONFIG_HISI}" == "true") {
614    sources += [ "$WPA_ROOT_DIR/wpa_supplicant_lib/driver_nl80211_hisi.c" ]
615    cflags += [
616      "-DCONFIG_DRIVER_NL80211_HISI",
617      "-DCONFIG_P2P_160M",
618    ]
619    if (use_musl) {
620      cflags += [ "-DCONFIG_DRIVER_NL80211_HISI_TRUNK" ]
621    }
622  }
623  cflags += ext_cflags
624
625  if (wpa_supplicant_ohos_certmgr) {
626    sources += [ "$WPA_ROOT_DIR/wpa_supplicant_lib/wpa_evp_key.c" ]
627    sources += cert_manager_sources
628    external_deps += cert_manager_external_deps
629    include_dirs += cert_manager_include_dirs
630    defines += [ "CONFIG_OHOS_CERTMGR" ]
631  }
632  if (wpa_supplicant_vendor_ext) {
633    sources += wpa_vendor_ext_src
634    external_deps += [ "cJSON:cjson" ]
635    if (wpa_supplicant_hisysevent_module != "") {
636      external_deps += [ wpa_supplicant_hisysevent_module ]
637    }
638  }
639  if ("${CONFIG_EAPAUTH}" == "true") {
640    cflags += [ "-DCONFIG_EAP_AUTH" ]
641  }
642
643  public_configs = [ ":wpa_base_public_config" ]
644  install_images = [
645    chipset_base_dir,
646    updater_vendor_base_dir
647  ]
648  configs = [ ":wpa_warnings" ]
649  part_name = "wpa_supplicant"
650  subsystem_name = "thirdparty"
651}
652
653ohos_executable("wpa_cli") {
654  sources = [
655    "$WPA_ROOT_DIR/src/common/cli.c",
656    "$WPA_ROOT_DIR/src/common/wpa_ctrl.c",
657    "$WPA_ROOT_DIR/src/utils/${CONFIG_ELOOP}.c",
658    "$WPA_ROOT_DIR/src/utils/common.c",
659    "$WPA_ROOT_DIR/src/utils/edit_simple.c",
660    "$WPA_ROOT_DIR/src/utils/os_${CONFIG_OS}.c",
661    "$WPA_ROOT_DIR/src/utils/wpa_debug.c",
662    "$WPA_ROOT_DIR/wpa_supplicant/wpa_cli.c",
663  ]
664
665  include_dirs = [
666    "$WPA_ROOT_DIR/src",
667    "$WPA_ROOT_DIR/src/utils",
668    "$WPA_ROOT_DIR/src/drivers",
669    "$WPA_ROOT_DIR/wpa_supplicant",
670    "$WPA_ROOT_DIR/build/include",
671  ]
672
673  cflags = [
674    "-UANDROID",
675    "-fsigned-char",
676    "-DCONFIG_IEEE80211W",
677    "-DCONFIG_NO_VLAN",
678    "-DCONFIG_NO_RADIUS",
679    "-DCONFIG_NO_RANDOM_POOL",
680    "-DCONFIG_SHA256",
681    "-DCONFIG_INTERNAL_LIBTOMMATH",
682    "-DCONFIG_INTERNAL_SHA384",
683    "-DCONFIG_INTERNAL_SHA512",
684    "-DCONFIG_CTRL_IFACE",
685    "-DCONFIG_IBSS_RSN",
686    "-DIEEE8021X_EAPOL",
687    "-DUSERSPACE_CLIENT_SUPPORT",
688    "-DCONFIG_BACKEND_FILE",
689    "-DCONFIG_NO_CONFIG_BLOBS",
690    "-DCONFIG_WPS",
691    "-DCONFIG_AP",
692    "-DCONFIG_P2P",
693    "-DEAP_WSC",
694    "-DEAP_SERVER_WSC",
695    "-DEAP_SERVER",
696    "-DCONFIG_GAS",
697    "-DCONFIG_OFFCHANNEL",
698    "-DCONFIG_MAGICLINK",
699    "-DCONFIG_DEBUG_FILE",
700    "-DCONFIG_OPEN_HARMONY_PATCH",
701  ]
702  if (wpa_supplicant_config_ext_auth) {
703    cflags += [ "-DEXT_AUTHENTICATION_SUPPORT" ]
704  }
705
706  if ("${CONFIG_CTRL_IFACE}" == "udp") {
707    cflags += [ "-DCONFIG_CTRL_IFACE_UDP" ]
708  } else {
709    cflags += [ "-DCONFIG_CTRL_IFACE_UNIX" ]
710  }
711
712  if (wpa_supplicant_config_wfd) {
713    cflags += [ "-DCONFIG_WIFI_DISPLAY" ]
714  }
715
716  if ("${CONFIG_DRIVER}" == "nl80211") {
717    include_dirs += [ "$WPA_ROOT_DIR/libnl/include/libnl3" ]
718    cflags += [
719      "-DCONFIG_DRIVER_NL80211",
720      "-DCONFIG_LIBNL32",
721    ]
722  } else {
723    cflags += [
724      "-DCONFIG_DRIVER_HDF",
725      "-DCONFIG_OHOS_P2P",
726    ]
727  }
728
729  if (wpa_supplicant_vendor_ext) {
730    include_dirs += wpa_vendor_ext_inc_path
731    sources += wpa_vendor_ext_src_cli
732    cflags += ext_cflags
733  }
734
735  external_deps = [ "init:libbegetutil" ]
736  if (wpa_supplicant_config_hilog) {
737    external_deps += [ "hilog:libhilog" ]
738  }
739
740  configs = [ ":wpa_warnings" ]
741  part_name = "wpa_supplicant"
742  subsystem_name = "thirdparty"
743  install_images = [ chipset_base_dir ]
744}
745
746ohos_executable("hostapd_cli") {
747  sources = [
748    "$WPA_ROOT_DIR/hostapd/hostapd_cli.c",
749    "$WPA_ROOT_DIR/src/common/cli.c",
750    "$WPA_ROOT_DIR/src/common/wpa_ctrl.c",
751    "$WPA_ROOT_DIR/src/utils/${CONFIG_ELOOP}.c",
752    "$WPA_ROOT_DIR/src/utils/common.c",
753    "$WPA_ROOT_DIR/src/utils/edit_simple.c",
754    "$WPA_ROOT_DIR/src/utils/os_${CONFIG_OS}.c",
755    "$WPA_ROOT_DIR/src/utils/wpa_debug.c",
756  ]
757
758  include_dirs = [
759    "$WPA_ROOT_DIR/src",
760    "$WPA_ROOT_DIR/src/utils",
761    "$WPA_ROOT_DIR/src/drivers",
762    "$WPA_ROOT_DIR/wpa_supplicant",
763    "$WPA_ROOT_DIR/build/include",
764    "$WPA_ROOT_DIR/libnl/include/libnl3",
765  ]
766
767  cflags = [
768    "-UANDROID",
769    "-fsigned-char",
770    "-DCONFIG_IEEE80211W",
771    "-DCONFIG_NO_VLAN",
772    "-DCONFIG_NO_RADIUS",
773    "-DCONFIG_NO_RANDOM_POOL",
774    "-DCONFIG_SHA256",
775    "-DCONFIG_INTERNAL_LIBTOMMATH",
776    "-DCONFIG_INTERNAL_SHA384",
777    "-DCONFIG_INTERNAL_SHA512",
778    "-DCONFIG_CTRL_IFACE",
779    "-DCONFIG_IBSS_RSN",
780    "-DIEEE8021X_EAPOL",
781    "-DUSERSPACE_CLIENT_SUPPORT",
782    "-DCONFIG_BACKEND_FILE",
783    "-DCONFIG_NO_CONFIG_BLOBS",
784    "-DCONFIG_NO_ACCOUNTING",
785    "-DEAP_SERVER_IDENTITY",
786    "-DCONFIG_IEEE80211N",
787    "-DHOSTAPD",
788    "-DNEED_AP_MLME",
789    "-DCONFIG_WPS",
790    "-DCONFIG_AP",
791    "-DCONFIG_P2P",
792    "-DEAP_WSC",
793    "-DEAP_SERVER_WSC",
794    "-DEAP_SERVER",
795    "-DCONFIG_GAS",
796    "-DCONFIG_OFFCHANNEL",
797    "-DCONFIG_DEBUG_FILE",
798    "-DCONFIG_OPEN_HARMONY_PATCH",
799  ]
800  if (wpa_supplicant_config_ext_auth) {
801    cflags += [ "-DEXT_AUTHENTICATION_SUPPORT" ]
802  }
803
804  if ("${CONFIG_CTRL_IFACE}" == "udp") {
805    cflags += [ "-DCONFIG_CTRL_IFACE_UDP" ]
806  } else {
807    cflags += [ "-DCONFIG_CTRL_IFACE_UNIX" ]
808  }
809
810  if (wpa_supplicant_config_wfd) {
811    cflags += [ "-DCONFIG_WIFI_DISPLAY" ]
812  }
813
814  external_deps = [ "init:libbegetutil" ]
815  if (wpa_supplicant_config_hilog) {
816    external_deps += [ "hilog:libhilog" ]
817  }
818
819  if ("${CONFIG_DRIVER}" == "nl80211") {
820    cflags += [
821      "-DCONFIG_DRIVER_NL80211",
822      "-DCONFIG_LIBNL32",
823    ]
824  } else {
825    cflags += [
826      "-DCONFIG_DRIVER_HDF",
827      "-DCONFIG_OHOS_P2P",
828    ]
829  }
830  configs = [ ":wpa_warnings" ]
831  part_name = "wpa_supplicant"
832  subsystem_name = "thirdparty"
833  install_images = [ chipset_base_dir ]
834}
835
836ohos_executable("wpa_supplicant") {
837  sources = [ "$WPA_ROOT_DIR/wpa_test/wpa_sample.c" ]
838
839  include_dirs = [ "$WPA_ROOT_DIR/build/include" ]
840
841  deps = [ ":wpa" ]
842
843  if (factory == true || build_variant != "user") {
844    deps += [ ":wpa_cli" ]
845  }
846
847  configs = [ ":wpa_warnings" ]
848  cflags = [
849    "-DCONFIG_DEBUG_FILE",
850    "-DCONFIG_OPEN_HARMONY_PATCH",
851  ]
852  if (wpa_supplicant_config_ext_auth) {
853    cflags += [ "-DEXT_AUTHENTICATION_SUPPORT" ]
854  }
855  install_images = [ chipset_base_dir ]
856  part_name = "wpa_supplicant"
857  subsystem_name = "thirdparty"
858}
859
860ohos_executable("hostapd") {
861  sources = [ "$WPA_ROOT_DIR/hostapd_test/hostapd_sample.c" ]
862
863  include_dirs = [ "$WPA_ROOT_DIR/build/include" ]
864
865  deps = [ ":wpa" ]
866
867  configs = [ ":wpa_warnings" ]
868  cflags = [
869    "-DCONFIG_DEBUG_FILE",
870    "-DCONFIG_OPEN_HARMONY_PATCH",
871  ]
872  if (wpa_supplicant_config_ext_auth) {
873    cflags += [ "-DEXT_AUTHENTICATION_SUPPORT" ]
874  }
875  install_images = [ chipset_base_dir ]
876  part_name = "wpa_supplicant"
877  subsystem_name = "thirdparty"
878}
879
880group("wpa_supplicant_test") {
881  testonly = true
882  if (wpa_supplicant_vendor_ext) {
883    deps = [ "//vendor/huawei/foundation/communication/wpa_supplicant_ext/test:wpa_vendor_test" ]
884  }
885}
886