• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2021 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
15// The wpa_supplicant related modules are split into 2 sections:
16// 1. For cuttlefish series products, start from `wpa_supplicant_headers` to `libpasn`.
17// 2. For non-cuttlefish series products, ex: physical devices created by oems,
18//    the section starts from `wpa_supplicant_driver_srcs_default` to the end of this file.
19
20package {
21    default_applicable_licenses: [
22        // Inherits SPDX-license-identifier-BSD-3-Clause
23        "external_wpa_supplicant_8_license",
24    ],
25}
26
27// See: http://go/android-license-faq
28license {
29    name: "external_wpa_supplicant_8_wpa_supplicant_icons_license",
30    license_kinds: ["SPDX-license-identifier-CC0-1.0"],
31    license_text: ["wpa_gui-qt4/icons/LICENSE"],
32}
33
34// Ostensibly unused.
35filegroup {
36    name: "wpa_supplicant_gui_qt4_icons",
37    srcs: ["wpa_gui-qt4/icons/*.svg"],
38    licenses: [
39        "external_wpa_supplicant_8_license",
40        "external_wpa_supplicant_8_wpa_supplicant_icons_license",
41    ],
42}
43
44// The section below is for cuttlefish series products. For non-cuttlefish
45// products please update the section starting at `wpa_supplicant_driver_srcs_default`.
46// Start of cuttlefish section
47cc_library_headers {
48    name: "wpa_supplicant_headers",
49    export_include_dirs: [
50        ".",
51        "src",
52        "src/common",
53        "src/drivers",
54        "src/eap_common",
55        "src/eapol_supp",
56        "src/eap_peer",
57        "src/eap_server",
58        "src/l2_packet",
59        "src/radius",
60        "src/rsn_supp",
61        "src/tls",
62        "src/utils",
63        "src/wps",
64    ],
65    soc_specific: true,
66}
67
68cc_library_headers {
69    name: "wpa_supplicant_headers_mainline",
70    export_include_dirs: [
71        ".",
72        "src",
73        "src/common",
74        "src/drivers",
75        "src/eap_common",
76        "src/eapol_supp",
77        "src/eap_peer",
78        "src/eap_server",
79        "src/l2_packet",
80        "src/radius",
81        "src/rsn_supp",
82        "src/tls",
83        "src/utils",
84        "src/wps",
85    ],
86    apex_available: [
87        "//apex_available:platform",
88        "com.android.wifi",
89    ],
90    min_sdk_version: "30",
91}
92
93filegroup {
94    name: "wpa_supplicant_template.conf",
95    srcs: ["wpa_supplicant_template.conf"],
96}
97
98cc_defaults {
99    name: "wpa_supplicant_defaults",
100    defaults: ["wpa_supplicant_cflags_defaults"],
101    srcs: [":wpa_supplicant_srcs"],
102    shared_libs: [
103        "android.hardware.wifi.supplicant-V4-ndk",
104        "android.system.keystore2-V1-ndk",
105        "libbase",
106        "libbinder_ndk",
107        "libc",
108        "libcrypto",
109        "libcutils",
110        "libkeystore-engine-wifi-hidl",
111        "liblog",
112        "libnl",
113        "libssl",
114        "libutils",
115    ],
116    relative_install_path: "hw",
117    soc_specific: true,
118    static_libs: [
119        "libwpa_aidl_bp",
120    ],
121    header_libs: [
122        "wpa_supplicant_headers",
123        "libwpa_aidl_headers",
124    ],
125}
126
127cc_defaults {
128    name: "wpa_supplicant_cflags_defaults",
129    // Generated by building wpa_supplicant and printing LOCAL_CFLAGS.
130    cflags: [
131        "-DANDROID_LOG_NAME=\"wpa_supplicant\"",
132        "-DANDROID_P2P",
133        "-DCONFIG_ACS",
134        "-DCONFIG_ANDROID_LOG",
135        "-DCONFIG_AP",
136        "-DCONFIG_BACKEND_FILE",
137        "-DCONFIG_CTRL_IFACE",
138        "-DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/vendor/wifi/wpa/sockets\"",
139        "-DCONFIG_CTRL_IFACE_DIR=\"/data/vendor/wifi/wpa/sockets\"",
140        "-DCONFIG_CTRL_IFACE_AIDL",
141        "-DCONFIG_CTRL_IFACE_UNIX",
142        "-DCONFIG_DPP",
143        "-DCONFIG_DPP2",
144        "-DCONFIG_DRIVER_NL80211",
145        "-DCONFIG_ECC",
146        "-DCONFIG_ERP",
147        "-DCONFIG_FILS",
148        "-DCONFIG_GAS",
149        "-DCONFIG_GAS_SERVER",
150        "-DCONFIG_AIDL",
151        "-DCONFIG_HMAC_SHA256_KDF",
152        "-DCONFIG_HMAC_SHA384_KDF",
153        "-DCONFIG_HMAC_SHA512_KDF",
154        "-DCONFIG_HS20",
155        "-DCONFIG_IEEE80211AC",
156        "-DCONFIG_IEEE80211R",
157        "-DCONFIG_INTERWORKING",
158        "-DCONFIG_IPV6",
159        "-DCONFIG_JSON",
160        "-DCONFIG_MBO",
161        "-DCONFIG_NAN_USD",
162        "-DCONFIG_NO_ACCOUNTING",
163        "-DCONFIG_NO_RADIUS",
164        "-DCONFIG_NO_RADIUS",
165        "-DCONFIG_NO_RANDOM_POOL",
166        "-DCONFIG_NO_ROAMING",
167        "-DCONFIG_NO_VLAN",
168        "-DCONFIG_OFFCHANNEL",
169        "-DCONFIG_OWE",
170        "-DCONFIG_P2P",
171        "-DCONFIG_PASN",
172        "-DCONFIG_SAE",
173        "-DCONFIG_SAE_PK",
174        "-DCONFIG_SHA256",
175        "-DCONFIG_SHA384",
176        "-DCONFIG_SHA512",
177        "-DCONFIG_SMARTCARD",
178        "-DCONFIG_SME",
179        "-DCONFIG_SUITEB",
180        "-DCONFIG_SUITEB192",
181        "-DCONFIG_TDLS",
182        "-DCONFIG_WEP",
183        "-DCONFIG_WIFI_DISPLAY",
184        "-DCONFIG_WNM",
185        "-DCONFIG_WPA_CLI_HISTORY_DIR=\"/data/vendor/wifi/wpa\"",
186        "-DCONFIG_WPS",
187        "-DCONFIG_WPS_ER",
188        "-DCONFIG_WPS_NFC",
189        "-DCONFIG_WPS_OOB",
190        "-DCONFIG_WPS_UPNP",
191        "-DEAP_AKA",
192        "-DEAP_AKA_PRIME",
193        "-DEAP_GTC",
194        "-DEAP_LEAP",
195        "-DEAP_MD5",
196        "-DEAP_MSCHAPv2",
197        "-DEAP_OTP",
198        "-DEAP_PEAP",
199        "-DCONFIG_PTKSA_CACHE",
200        "-DEAP_PWD",
201        "-DEAP_SERVER",
202        "-DEAP_SERVER_IDENTITY",
203        "-DEAP_SERVER_WSC",
204        "-DEAP_SIM",
205        "-DEAP_TLS",
206        "-DEAP_TLS_OPENSSL",
207        "-DEAP_TTLS",
208        "-DEAP_WSC",
209        "-DIEEE8021X_EAPOL",
210        "-DNEED_AP_MLME",
211        "-DPKCS12_FUNCS",
212        "-DTLS_DEFAULT_CIPHERS=\"DEFAULT:!EXP:!LOW\"",
213        "-DWPA_IGNORE_CONFIG_ERRORS",
214        "-Wall",
215        "-Werror",
216        "-Wno-error=sometimes-uninitialized",
217        "-Wno-incompatible-pointer-types",
218        "-Wno-incompatible-pointer-types-discards-qualifiers",
219        "-Wno-macro-redefined",
220        "-Wno-parentheses-equality",
221        "-Wno-sign-compare",
222        "-Wno-unused-function",
223        "-Wno-unused-parameter",
224        "-Wno-unused-variable",
225    ] +
226        // Devices that include this module should set these soong config vars appropriately.
227        // For example:
228        //   $(call soong_config_set, wpa_supplicant, platform_version, $(PLATFORM_VERSION))
229        //   $(call soong_config_set, wpa_supplicant, nl80211_driver, CONFIG_DRIVER_NL80211_QCA)
230        select(soong_config_variable("wpa_supplicant", "platform_version"), {
231            any @ version: ["-DVERSION_STR_POSTFIX=\"-" + version + "\""],
232            default: ["-DVERSION_STR_POSTFIX=\"-Android\""],
233        }) +
234        select(soong_config_variable("wpa_supplicant", "nl80211_driver"), {
235            any @ driver: ["-D" + driver],
236            // Flag is optional, so no default value provided.
237            default: [],
238        }),
239    // Similar to suppressing clang compiler warnings, here we
240    // suppress clang-tidy warnings to reduce noises in Android build.log.
241    tidy_checks: [
242        "-android-cloexec-*",
243        "-bugprone-branch-clone",
244        "-bugprone-macro-parentheses",
245        "-bugprone-misplaced-widening-cast",
246        "-bugprone-signal-handler",
247        "-bugprone-signed-char-misuse",
248        "-bugprone-sizeof-expression",
249        "-bugprone-suspicious-string-compare",
250        "-bugprone-too-small-loop-variable",
251        "-cert-err34-c",
252        "-cert-msc30-c",
253        "-cert-msc50-cpp",
254        "-cert-msc54-cpp",
255        "-cert-sig30-c",
256        "-cert-str34-c",
257        "-clang-analyzer-core.NullDereference",
258        "-clang-analyzer-core.UndefinedBinaryOperatorResult",
259        "-clang-analyzer-deadcode.DeadStores",
260        "-clang-analyzer-optin.performance.Padding",
261        "-clang-analyzer-optin.portability.UnixAPI",
262        "-clang-analyzer-security.insecureAPI.UncheckedReturn",
263        "-clang-analyzer-unix.cstring.NullArg",
264        "-clang-analyzer-unix.Malloc",
265        "-clang-diagnostic-unused-but-set-variable",
266        "-misc-redundant-expression",
267    ],
268}
269
270// Generated by building wpa_supplicant and printing LOCAL_SRC_FILES.
271filegroup {
272    name: "wpa_supplicant_srcs",
273    srcs: [
274        "ap.c",
275        "bss.c",
276        "bssid_ignore.c",
277        "config.c",
278        "config_file.c",
279        "ctrl_iface.c",
280        "ctrl_iface_unix.c",
281        "dpp_supplicant.c",
282        "eap_register.c",
283        "events.c",
284        "gas_query.c",
285        "hs20_supplicant.c",
286        "interworking.c",
287        "main.c",
288        "mbo.c",
289        "nan_usd.c",
290        "notify.c",
291        "offchannel.c",
292        "op_classes.c",
293        "p2p_supplicant.c",
294        "p2p_supplicant_sd.c",
295        "pasn_supplicant.c",
296        "robust_av.c",
297        "rrm.c",
298        "scan.c",
299        "sme.c",
300        "src/ap/acs.c",
301        "src/ap/ap_config.c",
302        "src/ap/ap_drv_ops.c",
303        "src/ap/ap_list.c",
304        "src/ap/comeback_token.c",
305        "src/ap/ap_mlme.c",
306        "src/ap/authsrv.c",
307        "src/ap/beacon.c",
308        "src/ap/bss_load.c",
309        "src/ap/ctrl_iface_ap.c",
310        "src/ap/dfs.c",
311        "src/ap/dpp_hostapd.c",
312        "src/ap/drv_callbacks.c",
313        "src/ap/eap_user_db.c",
314        "src/ap/fils_hlp.c",
315        "src/ap/gas_query_ap.c",
316        "src/ap/gas_serv.c",
317        "src/ap/hostapd.c",
318        "src/ap/hs20.c",
319        "src/ap/hw_features.c",
320        "src/ap/ieee802_11_auth.c",
321        "src/ap/ieee802_11.c",
322        "src/ap/ieee802_11_ht.c",
323        "src/ap/ieee802_11_shared.c",
324        "src/ap/ieee802_11_vht.c",
325        "src/ap/ieee802_1x.c",
326        "src/ap/mbo_ap.c",
327        "src/ap/nan_usd_ap.c",
328        "src/ap/neighbor_db.c",
329        "src/ap/p2p_hostapd.c",
330        "src/ap/pmksa_cache_auth.c",
331        "src/ap/rrm.c",
332        "src/ap/sta_info.c",
333        "src/ap/tkip_countermeasures.c",
334        "src/ap/utils.c",
335        "src/ap/wmm.c",
336        "src/ap/wpa_auth.c",
337        "src/ap/wpa_auth_glue.c",
338        "src/ap/wpa_auth_ie.c",
339        "src/ap/wps_hostapd.c",
340        "src/common/ctrl_iface_common.c",
341        "src/common/dpp_auth.c",
342        "src/common/dpp_backup.c",
343        "src/common/dpp.c",
344        "src/common/dpp_crypto.c",
345        "src/common/dpp_pkex.c",
346        "src/common/dpp_reconfig.c",
347        "src/common/dpp_tcp.c",
348        "src/common/dragonfly.c",
349        "src/common/gas.c",
350        "src/common/gas_server.c",
351        "src/common/hw_features_common.c",
352        "src/common/ieee802_11_common.c",
353        "src/common/nan_de.c",
354        "src/common/sae.c",
355        "src/common/sae_pk.c",
356        "src/common/wpa_common.c",
357        "src/common/ptksa_cache.c",
358        "src/crypto/aes-ctr.c",
359        "src/crypto/aes-encblock.c",
360        "src/crypto/aes-siv.c",
361        "src/crypto/crypto_openssl.c",
362        "src/crypto/dh_groups.c",
363        "src/crypto/fips_prf_openssl.c",
364        "src/crypto/milenage.c",
365        "src/crypto/ms_funcs.c",
366        "src/crypto/sha1-prf.c",
367        "src/crypto/sha1-tlsprf.c",
368        "src/crypto/sha256-kdf.c",
369        "src/crypto/sha256-prf.c",
370        "src/crypto/sha256-tlsprf.c",
371        "src/crypto/sha384-kdf.c",
372        "src/crypto/sha384-prf.c",
373        "src/crypto/sha512-kdf.c",
374        "src/crypto/sha512-prf.c",
375        "src/crypto/tls_openssl.c",
376        "src/crypto/tls_openssl_ocsp.c",
377        "src/drivers/driver_common.c",
378        "src/drivers/driver_nl80211_android.c",
379        "src/drivers/driver_nl80211.c",
380        "src/drivers/driver_nl80211_capa.c",
381        "src/drivers/driver_nl80211_event.c",
382        "src/drivers/driver_nl80211_monitor.c",
383        "src/drivers/driver_nl80211_scan.c",
384        "src/drivers/drivers.c",
385        "src/drivers/linux_ioctl.c",
386        "src/drivers/netlink.c",
387        "src/drivers/rfkill.c",
388        "src/eap_common/chap.c",
389        "src/eap_common/eap_common.c",
390        "src/eap_common/eap_peap_common.c",
391        "src/eap_common/eap_pwd_common.c",
392        "src/eap_common/eap_sim_common.c",
393        "src/eap_common/eap_wsc_common.c",
394        "src/eapol_auth/eapol_auth_sm.c",
395        "src/eapol_supp/eapol_supp_sm.c",
396        "src/eap_peer/eap_aka.c",
397        "src/eap_peer/eap.c",
398        "src/eap_peer/eap_gtc.c",
399        "src/eap_peer/eap_leap.c",
400        "src/eap_peer/eap_md5.c",
401        "src/eap_peer/eap_methods.c",
402        "src/eap_peer/eap_mschapv2.c",
403        "src/eap_peer/eap_otp.c",
404        "src/eap_peer/eap_peap.c",
405        "src/eap_peer/eap_pwd.c",
406        "src/eap_peer/eap_sim.c",
407        "src/eap_peer/eap_tls.c",
408        "src/eap_peer/eap_tls_common.c",
409        "src/eap_peer/eap_ttls.c",
410        "src/eap_peer/eap_wsc.c",
411        "src/eap_peer/mschapv2.c",
412        "src/eap_server/eap_server.c",
413        "src/eap_server/eap_server_identity.c",
414        "src/eap_server/eap_server_methods.c",
415        "src/eap_server/eap_server_wsc.c",
416        "src/l2_packet/l2_packet_linux.c",
417        "src/p2p/p2p_build.c",
418        "src/p2p/p2p.c",
419        "src/p2p/p2p_dev_disc.c",
420        "src/p2p/p2p_go_neg.c",
421        "src/p2p/p2p_group.c",
422        "src/p2p/p2p_invitation.c",
423        "src/p2p/p2p_parse.c",
424        "src/p2p/p2p_pd.c",
425        "src/p2p/p2p_sd.c",
426        "src/p2p/p2p_utils.c",
427        "src/pasn/pasn_initiator.c",
428        "src/pasn/pasn_responder.c",
429        "src/pasn/pasn_common.c",
430        "src/rsn_supp/pmksa_cache.c",
431        "src/rsn_supp/preauth.c",
432        "src/rsn_supp/tdls.c",
433        "src/rsn_supp/wpa.c",
434        "src/rsn_supp/wpa_ft.c",
435        "src/rsn_supp/wpa_ie.c",
436        "src/tls/asn1.c",
437        "src/utils/base64.c",
438        "src/utils/bitfield.c",
439        "src/utils/common.c",
440        "src/utils/config.c",
441        "src/utils/crc32.c",
442        "src/utils/eloop.c",
443        "src/utils/ip_addr.c",
444        "src/utils/json.c",
445        "src/utils/os_unix.c",
446        "src/utils/radiotap.c",
447        "src/utils/uuid.c",
448        "src/utils/wpabuf.c",
449        "src/utils/wpa_debug.c",
450        "src/wps/http_client.c",
451        "src/wps/httpread.c",
452        "src/wps/http_server.c",
453        "src/wps/ndef.c",
454        "src/wps/upnp_xml.c",
455        "src/wps/wps_attr_build.c",
456        "src/wps/wps_attr_parse.c",
457        "src/wps/wps_attr_process.c",
458        "src/wps/wps.c",
459        "src/wps/wps_common.c",
460        "src/wps/wps_dev_attr.c",
461        "src/wps/wps_enrollee.c",
462        "src/wps/wps_er.c",
463        "src/wps/wps_er_ssdp.c",
464        "src/wps/wps_registrar.c",
465        "src/wps/wps_upnp_ap.c",
466        "src/wps/wps_upnp.c",
467        "src/wps/wps_upnp_event.c",
468        "src/wps/wps_upnp_ssdp.c",
469        "src/wps/wps_upnp_web.c",
470        "twt.c",
471        "wifi_display.c",
472        "wmm_ac.c",
473        "wnm_sta.c",
474        "wpas_glue.c",
475        "wpa_supplicant.c",
476        "wps_supplicant.c",
477    ],
478}
479
480// Generated by building wpa_cli and printing LOCAL_SRC_FILES
481filegroup {
482    name: "wpa_cli_srcs",
483    srcs: [
484        "src/common/cli.c",
485        "src/common/wpa_ctrl.c",
486        "src/utils/common.c",
487        "src/utils/edit.c",
488        "src/utils/eloop.c",
489        "src/utils/os_unix.c",
490        "src/utils/wpa_debug.c",
491        "wpa_cli.c",
492    ],
493}
494
495// Generated by building libwpa_client and printing LOCAL_SRC_FILES
496filegroup {
497    name: "libwpa_client_srcs",
498    srcs: [
499        "src/common/wpa_ctrl.c",
500        "src/utils/os_unix.c",
501    ],
502}
503
504cc_library_headers {
505    name: "libwpa_client_headers",
506    export_include_dirs: [
507        ".",
508        "wpa_client_include/libwpa_client",
509    ],
510    soc_specific: true,
511}
512
513cc_library {
514    name: "libpasn",
515    vendor: true,
516    cflags: [
517        "-DANDROID_LOG_NAME=\"libpasn\"",
518        "-DANDROID_P2P",
519        "-DCONFIG_ACS",
520        "-DCONFIG_ANDROID_LOG",
521        "-DCONFIG_AP",
522        "-DCONFIG_BACKEND_FILE",
523        "-DCONFIG_CTRL_IFACE",
524        "-DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/vendor/wifi/wpa/sockets\"",
525        "-DCONFIG_CTRL_IFACE_DIR=\"/data/vendor/wifi/wpa/sockets\"",
526        "-DCONFIG_CTRL_IFACE_AIDL",
527        "-DCONFIG_CTRL_IFACE_UNIX",
528        "-DCONFIG_DPP",
529        "-DCONFIG_DPP2",
530        "-DCONFIG_DRIVER_NL80211",
531        "-DCONFIG_ECC",
532        "-DCONFIG_ERP",
533        "-DCONFIG_FILS",
534        "-DCONFIG_GAS",
535        "-DCONFIG_GAS_SERVER",
536        "-DCONFIG_AIDL",
537        "-DCONFIG_HMAC_SHA256_KDF",
538        "-DCONFIG_HMAC_SHA384_KDF",
539        "-DCONFIG_HMAC_SHA512_KDF",
540        "-DCONFIG_HS20",
541        "-DCONFIG_IEEE80211AC",
542        "-DCONFIG_IEEE80211R",
543        "-DCONFIG_INTERWORKING",
544        "-DCONFIG_IPV6",
545        "-DCONFIG_JSON",
546        "-DCONFIG_MBO",
547        "-DCONFIG_NO_ACCOUNTING",
548        "-DCONFIG_NO_RADIUS",
549        "-DCONFIG_NO_RADIUS",
550        "-DCONFIG_NO_RANDOM_POOL",
551        "-DCONFIG_NO_ROAMING",
552        "-DCONFIG_NO_VLAN",
553        "-DCONFIG_OFFCHANNEL",
554        "-DCONFIG_OWE",
555        "-DCONFIG_P2P",
556        "-DCONFIG_SAE",
557        "-DCONFIG_SAE_PK",
558        "-DCONFIG_SHA256",
559        "-DCONFIG_SHA384",
560        "-DCONFIG_SHA512",
561        "-DCONFIG_SMARTCARD",
562        "-DCONFIG_SME",
563        "-DCONFIG_SUITEB",
564        "-DCONFIG_SUITEB192",
565        "-DCONFIG_TDLS",
566        "-DCONFIG_WEP",
567        "-DCONFIG_WIFI_DISPLAY",
568        "-DCONFIG_WNM",
569        "-DCONFIG_WPA_CLI_HISTORY_DIR=\"/data/vendor/wifi/wpa\"",
570        "-DCONFIG_WPS",
571        "-DCONFIG_WPS_ER",
572        "-DCONFIG_WPS_NFC",
573        "-DCONFIG_WPS_OOB",
574        "-DCONFIG_WPS_UPNP",
575        "-DEAP_AKA",
576        "-DEAP_AKA_PRIME",
577        "-DEAP_GTC",
578        "-DEAP_LEAP",
579        "-DEAP_MD5",
580        "-DEAP_MSCHAPv2",
581        "-DEAP_OTP",
582        "-DEAP_PEAP",
583        "-DCONFIG_PASN",
584        "-DCONFIG_PTKSA_CACHE",
585        "-DEAP_PWD",
586        "-DEAP_SERVER",
587        "-DEAP_SERVER_IDENTITY",
588        "-DEAP_SERVER_WSC",
589        "-DEAP_SIM",
590        "-DEAP_TLS",
591        "-DEAP_TLS_OPENSSL",
592        "-DEAP_TTLS",
593        "-DEAP_WSC",
594        "-DIEEE8021X_EAPOL",
595        "-DNEED_AP_MLME",
596        "-DPKCS12_FUNCS",
597        "-DTLS_DEFAULT_CIPHERS=\"DEFAULT:!EXP:!LOW\"",
598        "-DWPA_IGNORE_CONFIG_ERRORS",
599        "-Wall",
600        "-Werror",
601        "-Wno-error=sometimes-uninitialized",
602        "-Wno-incompatible-pointer-types",
603        "-Wno-incompatible-pointer-types-discards-qualifiers",
604        "-Wno-macro-redefined",
605        "-Wno-parentheses-equality",
606        "-Wno-sign-compare",
607        "-Wno-unused-function",
608        "-Wno-unused-parameter",
609        "-Wno-unused-variable",
610    ],
611    product_variables: {
612        debuggable: {
613            cflags: ["-DLOG_NDEBUG=0"],
614        },
615    },
616    local_include_dirs: [
617        ".",
618        "src",
619        "src/common",
620        "src/drivers",
621        "src/eap_common",
622        "src/eapol_supp",
623        "src/eap_peer",
624        "src/eap_server",
625        "src/l2_packet",
626        "src/radius",
627        "src/rsn_supp",
628        "src/tls",
629        "src/utils",
630        "src/wps",
631    ],
632    srcs: [
633        "src/utils/eloop.c",
634        "src/utils/wpa_debug.c",
635        "src/utils/wpabuf.c",
636        "src/utils/os_unix.c",
637        "src/utils/config.c",
638        "src/utils/common.c",
639        "src/utils/base64.c",
640        "src/common/sae.c",
641        "src/common/sae_pk.c",
642        "src/common/wpa_common.c",
643        "src/common/ieee802_11_common.c",
644        "src/common/dragonfly.c",
645        "src/common/ptksa_cache.c",
646        "src/rsn_supp/pmksa_cache.c",
647        "src/rsn_supp/wpa_ie.c",
648        "src/ap/comeback_token.c",
649        "src/ap/pmksa_cache_auth.c",
650        "src/eap_common/eap_common.c",
651        "src/eap_common/chap.c",
652        "src/eap_peer/eap.c",
653        "src/eap_peer/eap_methods.c",
654        "src/eapol_supp/eapol_supp_sm.c",
655        "src/crypto/crypto_openssl.c",
656        "src/crypto/tls_openssl.c",
657        "src/crypto/tls_openssl_ocsp.c",
658        "src/crypto/sha256-tlsprf.c",
659        "src/crypto/sha512-prf.c",
660        "src/crypto/sha384-prf.c",
661        "src/crypto/sha256-prf.c",
662        "src/crypto/sha512-kdf.c",
663        "src/crypto/sha384-kdf.c",
664        "src/crypto/sha256-kdf.c",
665        "src/crypto/dh_groups.c",
666        "src/crypto/aes-siv.c",
667        "src/crypto/aes-ctr.c",
668        "src/crypto/sha1-prf.c",
669        "src/crypto/sha1-tlsprf.c",
670        "src/pasn/pasn_initiator.c",
671        "src/pasn/pasn_responder.c",
672        "src/pasn/pasn_common.c",
673    ],
674    shared_libs: [
675        "libc",
676        "libcutils",
677        "liblog",
678        "libcrypto",
679        "libssl",
680        "libkeystore-engine-wifi-hidl",
681    ],
682    sanitize: {
683        misc_undefined: [
684            "unsigned-integer-overflow",
685            "signed-integer-overflow",
686        ],
687        cfi: true,
688    },
689}
690
691// End of cuttlefish section
692
693// The section starting below is for non-cuttlefish products.
694// For cuttlefish series please update the section starting from `wpa_supplicant_headers`.
695
696// If you need to add a new build setting based on a product config, ex:
697// ifeq ($(WIFI_PRIV_CMD_UPDATE_MBO_CELL_STATUS), enabled)
698//   L_CFLAGS += -DENABLE_PRIV_CMD_UPDATE_MBO_CELL_STATUS
699// endif
700
701// In order to export the Makefile variable to soong, you will need to use a `soong_config_set` method
702// under `build/core/board_config_wpa_supplicant.mk`. Ex:
703// ifeq ($(WIFI_PRIV_CMD_UPDATE_MBO_CELL_STATUS), enabled)
704//   $(call soong_config_set_bool,wpa_supplicant_8,wifi_priv_cmd_update_mbo_cell_status,true)
705// endif
706
707// And then use the select statement in Android.bp to reflect the condition you need, ex:
708// select(soong_config_variable("wpa_supplicant_8", "wifi_priv_cmd_update_mbo_cell_status"), {
709//     true: ["-DENABLE_PRIV_CMD_UPDATE_MBO_CELL_STATUS"],
710//     default: [],
711// })
712
713// Start of non-cuttlefish section
714cc_defaults {
715    name: "wpa_supplicant_driver_srcs_default",
716    srcs: [
717        "src/drivers/driver_nl80211.c",
718        "src/drivers/driver_nl80211_android.c",
719        "src/drivers/driver_nl80211_capa.c",
720        "src/drivers/driver_nl80211_event.c",
721        "src/drivers/driver_nl80211_monitor.c",
722        "src/drivers/driver_nl80211_scan.c",
723        "src/drivers/linux_ioctl.c",
724        "src/drivers/netlink.c",
725        "src/drivers/rfkill.c",
726        "src/utils/radiotap.c",
727    ],
728}
729
730cc_defaults {
731    name: "wpa_supplicant_driver_cflags_default",
732    cflags: [
733        "-DCONFIG_DRIVER_NL80211",
734        // Because the original Android.mk will call hostapd's Android.mk first and it
735        // will make the flag share with wpa_supplicant, keep the original logic in hostapd.
736    ] + select(soong_config_variable("wpa_supplicant_8", "board_wlan_device"), {
737        "bcmdhd": ["-DCONFIG_DRIVER_NL80211_BRCM"],
738        "synadhd": ["-DCONFIG_DRIVER_NL80211_SYNA"],
739        "qcwcn": ["-DCONFIG_DRIVER_NL80211_QCA"],
740        default: ["-DCONFIG_DRIVER_NL80211_QCA"],
741    }),
742}
743
744cc_defaults {
745    name: "wpa_supplicant_includes_default",
746    local_include_dirs: [
747        ".",
748        "src",
749        "src/common",
750        "src/drivers",
751        "src/eap_common",
752        "src/eap_peer",
753        "src/eap_server",
754        "src/eapol_supp",
755        "src/l2_packet",
756        "src/pasn",
757        "src/radius",
758        "src/rsn_supp",
759        "src/tls",
760        "src/utils",
761        "src/wps",
762    ],
763    include_dirs: [
764        // There's an if condition for external/libnl but current code base should always have this.
765        "external/libnl/include",
766        "system/security/keystore/include",
767    ],
768}
769
770soong_config_module_type {
771    name: "wpa_supplicant_cc_defaults_type",
772    module_type: "cc_defaults",
773    config_namespace: "wpa_supplicant_8",
774    value_variables: [
775        "platform_version",
776    ],
777    properties: ["cflags"],
778}
779
780// Hostap related module share the same CFLAGS
781wpa_supplicant_cc_defaults_type {
782    name: "wpa_supplicant_no_aidl_cflags_default",
783    cflags: [
784        "-DANDROID_LOG_NAME=\"wpa_supplicant\"",
785        "-DANDROID_P2P",
786        "-DCONFIG_ACS",
787        "-DCONFIG_ANDROID_LOG",
788        "-DCONFIG_AP",
789        "-DCONFIG_BACKEND_FILE",
790        "-DCONFIG_CTRL_IFACE",
791        "-DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/vendor/wifi/wpa/sockets\"",
792        "-DCONFIG_CTRL_IFACE_DIR=\"/data/vendor/wifi/wpa/sockets\"",
793        "-DCONFIG_CTRL_IFACE_UNIX",
794        "-DCONFIG_DPP",
795        "-DCONFIG_DPP2",
796        "-DCONFIG_DRIVER_NL80211",
797        "-DCONFIG_ECC",
798        "-DCONFIG_ERP",
799        "-DCONFIG_FILS",
800        "-DCONFIG_GAS",
801        "-DCONFIG_GAS_SERVER",
802        "-DCONFIG_HMAC_SHA256_KDF",
803        "-DCONFIG_HMAC_SHA384_KDF",
804        "-DCONFIG_HMAC_SHA512_KDF",
805        "-DCONFIG_HS20",
806        "-DCONFIG_IEEE80211AC",
807        "-DCONFIG_IEEE80211R",
808        "-DCONFIG_INTERWORKING",
809        "-DCONFIG_IPV6",
810        "-DCONFIG_JSON",
811        "-DCONFIG_MBO",
812        "-DCONFIG_NO_ACCOUNTING",
813        "-DCONFIG_NO_RADIUS",
814        "-DCONFIG_NO_RADIUS",
815        "-DCONFIG_NO_RANDOM_POOL",
816        "-DCONFIG_NO_VLAN",
817        "-DCONFIG_OFFCHANNEL",
818        "-DCONFIG_OWE",
819        "-DCONFIG_P2P",
820        "-DCONFIG_PTKSA_CACHE",
821        "-DCONFIG_SAE",
822        "-DCONFIG_SAE_PK",
823        "-DCONFIG_SHA256",
824        "-DCONFIG_SHA384",
825        "-DCONFIG_SHA512",
826        "-DCONFIG_SMARTCARD",
827        "-DCONFIG_SME",
828        "-DCONFIG_SUITEB",
829        "-DCONFIG_SUITEB192",
830        "-DCONFIG_TDLS",
831        "-DCONFIG_WEP",
832        "-DCONFIG_WIFI_DISPLAY",
833        "-DCONFIG_WNM",
834        "-DCONFIG_WPA_CLI_HISTORY_DIR=\"/data/vendor/wifi/wpa\"",
835        "-DCONFIG_WPS",
836        "-DCONFIG_WPS_ER",
837        "-DCONFIG_WPS_NFC",
838        "-DCONFIG_WPS_OOB",
839        "-DCONFIG_WPS_UPNP",
840        "-DCRYPTO_RSA_OAEP_SHA256",
841        "-DEAP_AKA",
842        "-DEAP_AKA_PRIME",
843        "-DEAP_GTC",
844        "-DEAP_LEAP",
845        "-DEAP_MD5",
846        "-DEAP_MSCHAPv2",
847        "-DEAP_OTP",
848        "-DEAP_PEAP",
849        "-DEAP_PWD",
850        "-DEAP_SERVER",
851        "-DEAP_SERVER_IDENTITY",
852        "-DEAP_SERVER_WSC",
853        "-DEAP_SIM",
854        "-DEAP_TLS",
855        "-DEAP_TLSV1_3",
856        "-DEAP_TLS_OPENSSL",
857        "-DEAP_TTLS",
858        "-DEAP_WSC",
859        "-DIEEE8021X_EAPOL",
860        "-DNEED_AP_MLME",
861        "-DPKCS12_FUNCS",
862        "-DTLS_DEFAULT_CIPHERS=\"DEFAULT:!EXP:!LOW\"",
863        "-DWPA_IGNORE_CONFIG_ERRORS",
864        "-Wall",
865        "-Werror",
866        "-Wno-error=sometimes-uninitialized",
867        "-Wno-incompatible-pointer-types",
868        "-Wno-incompatible-pointer-types-discards-qualifiers",
869        "-Wno-macro-redefined",
870        "-Wno-parentheses-equality",
871        "-Wno-sign-compare",
872        "-Wno-unused-function",
873        "-Wno-unused-parameter",
874        "-Wno-unused-variable",
875    ] + select(soong_config_variable("wpa_supplicant_8", "wpa_supplicant_use_stub_lib"), {
876        true: ["-DANDROID_LIB_STUB"],
877        default: [],
878    }) + select(soong_config_variable("wpa_supplicant_8", "board_wpa_supplicant_private_lib_event"), {
879        true: ["-DANDROID_LIB_EVENT"],
880        default: [],
881    }) + select(soong_config_variable("wpa_supplicant_8", "wifi_priv_cmd_update_mbo_cell_status"), {
882        true: ["-DENABLE_PRIV_CMD_UPDATE_MBO_CELL_STATUS"],
883        default: [],
884    }) + select(soong_config_variable("wpa_supplicant_8", "wifi_brcm_open_source_multi_akm"), {
885        true: ["-DWIFI_BRCM_OPEN_SOURCE_MULTI_AKM"],
886        default: [],
887    }) + select(soong_config_variable("wpa_supplicant_8", "wpa_supplicant_11ax"), {
888        true: ["-DCONFIG_IEEE80211AX"],
889        default: [],
890    }) + select(soong_config_variable("wpa_supplicant_8", "wpa_supplicant_11be"), {
891        true: ["-DCONFIG_IEEE80211BE"],
892        default: [],
893    }) + select(soong_config_variable("wpa_supplicant", "roaming"), {
894        true: [],
895        default: ["-DCONFIG_NO_ROAMING"],
896    }) + select(soong_config_variable("wpa_supplicant", "pasn"), {
897        false: [],
898        default: ["-DCONFIG_PASN"],
899    }) + select(soong_config_variable("wpa_supplicant", "bgscan_simple"), {
900        true: [
901            "-DCONFIG_BGSCAN",
902            "-DCONFIG_BGSCAN_SIMPLE",
903        ],
904        default: [],
905    }),
906    arch: {
907        arm: {
908            cflags: [
909                "-mabi=aapcs-linux",
910            ],
911        },
912    },
913    defaults: [
914        "wpa_supplicant_driver_cflags_default",
915    ],
916    soong_config_variables: {
917        platform_version: {
918            cflags: ["-DVERSION_STR_POSTFIX=\"-%s\""],
919        },
920    },
921}
922
923cc_defaults {
924    name: "wpa_supplicant_cflags_default",
925    cflags: [
926        "-DCONFIG_AIDL",
927        "-DCONFIG_CTRL_IFACE_AIDL",
928    ],
929    defaults: [
930        "wpa_supplicant_no_aidl_cflags_default",
931    ],
932}
933
934wpa_supplicant_cc_defaults_type {
935    name: "wpa_supplicant_mainline_cflags_default",
936    cflags: [
937        "-DANDROID_LIB_STUB",
938        "-DANDROID_LOG_NAME=\"mainline_supplicant\"",
939        "-DCONFIG_ANDROID_LOG",
940        "-DCONFIG_BACKEND_FILE",
941        "-DCONFIG_CTRL_IFACE",
942        "-DCONFIG_CTRL_IFACE_UNIX",
943        "-DCONFIG_DRIVER_NL80211",
944        "-DCONFIG_NO_ACCOUNTING",
945        "-DCONFIG_NO_CONFIG_BLOBS",
946        "-DCONFIG_NO_CONFIG_WRITE",
947        "-DCONFIG_NO_RADIUS",
948        "-DCONFIG_NO_RANDOM_POOL",
949        "-DCONFIG_NO_ROAMING",
950        "-DCONFIG_NO_ROBUST_AV",
951        "-DCONFIG_NO_RRM",
952        "-DCONFIG_NO_SCAN_PROCESSING",
953        "-DCONFIG_NO_TKIP",
954        "-DCONFIG_NO_VLAN",
955        "-DCONFIG_NO_WMM_AC",
956        "-DCONFIG_NO_WPA",
957        "-DCONFIG_NO_WPA_PASSPHRASE",
958        "-DCONFIG_OFFCHANNEL",
959        "-DMAINLINE_SUPPLICANT",
960        "-DOPENSSL_NO_ENGINE",
961        "-DWPA_IGNORE_CONFIG_ERRORS",
962        "-Wall",
963        "-Werror",
964        "-Wno-error=sometimes-uninitialized",
965        "-Wno-incompatible-pointer-types",
966        "-Wno-incompatible-pointer-types-discards-qualifiers",
967        "-Wno-macro-redefined",
968        "-Wno-parentheses-equality",
969        "-Wno-sign-compare",
970        "-Wno-unused-function",
971        "-Wno-unused-parameter",
972        "-Wno-unused-variable",
973    ],
974}
975
976cc_defaults {
977    name: "wpa_supplicant_srcs_default",
978    srcs: [
979        "ap.c",
980        "bss.c",
981        "bssid_ignore.c",
982        "config.c",
983        "config_file.c",
984        "ctrl_iface.c",
985        "ctrl_iface_unix.c",
986        "dpp_supplicant.c",
987        "eap_register.c",
988        "events.c",
989        "gas_query.c",
990        "hs20_supplicant.c",
991        "interworking.c",
992        "main.c",
993        "mbo.c",
994        "notify.c",
995        "offchannel.c",
996        "op_classes.c",
997        "p2p_supplicant.c",
998        "p2p_supplicant_sd.c",
999        "robust_av.c",
1000        "rrm.c",
1001        "scan.c",
1002        "sme.c",
1003        "twt.c",
1004        "wifi_display.c",
1005        "wmm_ac.c",
1006        "wnm_sta.c",
1007        "wpa_supplicant.c",
1008        "wpas_glue.c",
1009        "wps_supplicant.c",
1010        "src/ap/acs.c",
1011        "src/ap/ap_config.c",
1012        "src/ap/ap_drv_ops.c",
1013        "src/ap/ap_list.c",
1014        "src/ap/ap_mlme.c",
1015        "src/ap/authsrv.c",
1016        "src/ap/beacon.c",
1017        "src/ap/bss_load.c",
1018        "src/ap/comeback_token.c",
1019        "src/ap/ctrl_iface_ap.c",
1020        "src/ap/dfs.c",
1021        "src/ap/dpp_hostapd.c",
1022        "src/ap/drv_callbacks.c",
1023        "src/ap/eap_user_db.c",
1024        "src/ap/fils_hlp.c",
1025        "src/ap/gas_query_ap.c",
1026        "src/ap/gas_serv.c",
1027        "src/ap/hostapd.c",
1028        "src/ap/hs20.c",
1029        "src/ap/hw_features.c",
1030        "src/ap/ieee802_11.c",
1031        "src/ap/ieee802_11_auth.c",
1032        "src/ap/ieee802_11_ht.c",
1033        "src/ap/ieee802_11_shared.c",
1034        "src/ap/ieee802_11_vht.c",
1035        "src/ap/ieee802_1x.c",
1036        "src/ap/mbo_ap.c",
1037        "src/ap/neighbor_db.c",
1038        "src/ap/p2p_hostapd.c",
1039        "src/ap/pmksa_cache_auth.c",
1040        "src/ap/rrm.c",
1041        "src/ap/sta_info.c",
1042        "src/ap/tkip_countermeasures.c",
1043        "src/ap/utils.c",
1044        "src/ap/wmm.c",
1045        "src/ap/wpa_auth.c",
1046        "src/ap/wpa_auth_glue.c",
1047        "src/ap/wpa_auth_ie.c",
1048        "src/ap/wps_hostapd.c",
1049        "src/common/ctrl_iface_common.c",
1050        "src/common/dpp.c",
1051        "src/common/dpp_auth.c",
1052        "src/common/dpp_backup.c",
1053        "src/common/dpp_crypto.c",
1054        "src/common/dpp_pkex.c",
1055        "src/common/dpp_reconfig.c",
1056        "src/common/dpp_tcp.c",
1057        "src/common/dragonfly.c",
1058        "src/common/gas.c",
1059        "src/common/gas_server.c",
1060        "src/common/hw_features_common.c",
1061        "src/common/ieee802_11_common.c",
1062        "src/common/ptksa_cache.c",
1063        "src/common/sae.c",
1064        "src/common/sae_pk.c",
1065        "src/common/wpa_common.c",
1066        "src/crypto/aes-ctr.c",
1067        "src/crypto/aes-siv.c",
1068        "src/crypto/crypto_openssl.c",
1069        "src/crypto/dh_groups.c",
1070        "src/crypto/fips_prf_openssl.c",
1071        "src/crypto/ms_funcs.c",
1072        "src/crypto/sha1-prf.c",
1073        "src/crypto/sha1-tlsprf.c",
1074        "src/crypto/sha256-kdf.c",
1075        "src/crypto/sha256-prf.c",
1076        "src/crypto/sha256-tlsprf.c",
1077        "src/crypto/sha384-kdf.c",
1078        "src/crypto/sha384-prf.c",
1079        "src/crypto/sha512-kdf.c",
1080        "src/crypto/sha512-prf.c",
1081        "src/crypto/tls_openssl.c",
1082        "src/crypto/tls_openssl_ocsp.c",
1083        "src/drivers/driver_common.c",
1084        "src/drivers/driver_nl80211.c",
1085        "src/drivers/driver_nl80211_android.c",
1086        "src/drivers/driver_nl80211_capa.c",
1087        "src/drivers/driver_nl80211_event.c",
1088        "src/drivers/driver_nl80211_monitor.c",
1089        "src/drivers/driver_nl80211_scan.c",
1090        "src/drivers/drivers.c",
1091        "src/drivers/linux_ioctl.c",
1092        "src/drivers/netlink.c",
1093        "src/drivers/rfkill.c",
1094        "src/eap_common/chap.c",
1095        "src/eap_common/eap_common.c",
1096        "src/eap_common/eap_peap_common.c",
1097        "src/eap_common/eap_pwd_common.c",
1098        "src/eap_common/eap_sim_common.c",
1099        "src/eap_common/eap_wsc_common.c",
1100        "src/eap_peer/eap.c",
1101        "src/eap_peer/eap_aka.c",
1102        "src/eap_peer/eap_gtc.c",
1103        "src/eap_peer/eap_leap.c",
1104        "src/eap_peer/eap_md5.c",
1105        "src/eap_peer/eap_methods.c",
1106        "src/eap_peer/eap_mschapv2.c",
1107        "src/eap_peer/eap_otp.c",
1108        "src/eap_peer/eap_peap.c",
1109        "src/eap_peer/eap_pwd.c",
1110        "src/eap_peer/eap_sim.c",
1111        "src/eap_peer/eap_tls.c",
1112        "src/eap_peer/eap_tls_common.c",
1113        "src/eap_peer/eap_ttls.c",
1114        "src/eap_peer/eap_wsc.c",
1115        "src/eap_peer/mschapv2.c",
1116        "src/eap_server/eap_server.c",
1117        "src/eap_server/eap_server_identity.c",
1118        "src/eap_server/eap_server_methods.c",
1119        "src/eap_server/eap_server_wsc.c",
1120        "src/eapol_auth/eapol_auth_sm.c",
1121        "src/eapol_supp/eapol_supp_sm.c",
1122        "src/l2_packet/l2_packet_linux.c",
1123        "src/p2p/p2p.c",
1124        "src/p2p/p2p_build.c",
1125        "src/p2p/p2p_dev_disc.c",
1126        "src/p2p/p2p_go_neg.c",
1127        "src/p2p/p2p_group.c",
1128        "src/p2p/p2p_invitation.c",
1129        "src/p2p/p2p_parse.c",
1130        "src/p2p/p2p_pd.c",
1131        "src/p2p/p2p_sd.c",
1132        "src/p2p/p2p_utils.c",
1133        "src/rsn_supp/pmksa_cache.c",
1134        "src/rsn_supp/preauth.c",
1135        "src/rsn_supp/tdls.c",
1136        "src/rsn_supp/wpa.c",
1137        "src/rsn_supp/wpa_ft.c",
1138        "src/rsn_supp/wpa_ie.c",
1139        "src/tls/asn1.c",
1140        "src/utils/base64.c",
1141        "src/utils/bitfield.c",
1142        "src/utils/common.c",
1143        "src/utils/config.c",
1144        "src/utils/crc32.c",
1145        "src/utils/eloop.c",
1146        "src/utils/ip_addr.c",
1147        "src/utils/json.c",
1148        "src/utils/os_unix.c",
1149        "src/utils/radiotap.c",
1150        "src/utils/uuid.c",
1151        "src/utils/wpa_debug.c",
1152        "src/utils/wpabuf.c",
1153        "src/wps/http_client.c",
1154        "src/wps/http_server.c",
1155        "src/wps/httpread.c",
1156        "src/wps/ndef.c",
1157        "src/wps/upnp_xml.c",
1158        "src/wps/wps.c",
1159        "src/wps/wps_attr_build.c",
1160        "src/wps/wps_attr_parse.c",
1161        "src/wps/wps_attr_process.c",
1162        "src/wps/wps_common.c",
1163        "src/wps/wps_dev_attr.c",
1164        "src/wps/wps_enrollee.c",
1165        "src/wps/wps_er.c",
1166        "src/wps/wps_er_ssdp.c",
1167        "src/wps/wps_registrar.c",
1168        "src/wps/wps_upnp.c",
1169        "src/wps/wps_upnp_ap.c",
1170        "src/wps/wps_upnp_event.c",
1171        "src/wps/wps_upnp_ssdp.c",
1172        "src/wps/wps_upnp_web.c",
1173    ] + select(soong_config_variable("wpa_supplicant_8", "wpa_supplicant_11ax"), {
1174        true: ["src/ap/ieee802_11_he.c"],
1175        default: [],
1176    }) + select(soong_config_variable("wpa_supplicant_8", "wpa_supplicant_11be"), {
1177        true: ["src/ap/ieee802_11_eht.c"],
1178        default: [],
1179    }) + select(soong_config_variable("wpa_supplicant", "bgscan_simple"), {
1180        true: [
1181            "bgscan.c",
1182            "bgscan_simple.c",
1183        ],
1184        default: [],
1185    }) + select(soong_config_variable("wpa_supplicant", "pasn"), {
1186        false: [],
1187        default: [
1188            "pasn_supplicant.c",
1189            "src/pasn/pasn_initiator.c",
1190            "src/pasn/pasn_responder.c",
1191            "src/pasn/pasn_common.c",
1192        ],
1193    }),
1194    defaults: [
1195        "wpa_supplicant_driver_srcs_default",
1196    ],
1197}
1198
1199cc_defaults {
1200    name: "wpa_supplicant_mainline_srcs_default",
1201    srcs: [
1202        "bss.c",
1203        "bssid_ignore.c",
1204        "config.c",
1205        "config_file.c",
1206        "ctrl_iface.c",
1207        "ctrl_iface_unix.c",
1208        "eap_register.c",
1209        "events.c",
1210        "main.c",
1211        "notify.c",
1212        "offchannel.c",
1213        "op_classes.c",
1214        "rrm.c",
1215        "scan.c",
1216        "wpa_supplicant.c",
1217        "wpas_glue.c",
1218        "src/common/ctrl_iface_common.c",
1219        "src/common/hw_features_common.c",
1220        "src/common/ieee802_11_common.c",
1221        "src/common/ptksa_cache.c",
1222        "src/common/wpa_common.c",
1223        "src/crypto/crypto_openssl.c",
1224        "src/crypto/tls_none.c",
1225        "src/drivers/driver_common.c",
1226        "src/drivers/driver_nl80211.c",
1227        "src/drivers/driver_nl80211_android.c",
1228        "src/drivers/driver_nl80211_capa.c",
1229        "src/drivers/driver_nl80211_event.c",
1230        "src/drivers/driver_nl80211_monitor.c",
1231        "src/drivers/driver_nl80211_scan.c",
1232        "src/drivers/drivers.c",
1233        "src/drivers/linux_ioctl.c",
1234        "src/drivers/netlink.c",
1235        "src/drivers/rfkill.c",
1236        "src/l2_packet/l2_packet_linux.c",
1237        "src/rsn_supp/pmksa_cache.c",
1238        "src/utils/base64.c",
1239        "src/utils/bitfield.c",
1240        "src/utils/common.c",
1241        "src/utils/config.c",
1242        "src/utils/crc32.c",
1243        "src/utils/eloop.c",
1244        "src/utils/ip_addr.c",
1245        "src/utils/os_unix.c",
1246        "src/utils/radiotap.c",
1247        "src/utils/wpa_debug.c",
1248        "src/utils/wpabuf.c",
1249    ],
1250    defaults: [
1251        "wpa_supplicant_driver_srcs_default",
1252    ],
1253}
1254
1255cc_defaults {
1256    name: "wpa_supplicant_usd_defaults",
1257    cflags: [
1258        "-DCONFIG_NAN_USD",
1259    ],
1260    srcs: [
1261        "nan_usd.c",
1262        "src/ap/nan_usd_ap.c",
1263        "src/common/nan_de.c",
1264    ],
1265}
1266
1267cc_binary {
1268    name: "wpa_cli",
1269    proprietary: true,
1270    srcs: [
1271        "wpa_cli.c",
1272        "src/common/cli.c",
1273        "src/common/wpa_ctrl.c",
1274        "src/utils/common.c",
1275        "src/utils/edit.c",
1276        "src/utils/eloop.c",
1277        "src/utils/os_unix.c",
1278        "src/utils/wpa_debug.c",
1279    ],
1280    shared_libs: [
1281        "libcutils",
1282        "liblog",
1283    ],
1284    defaults: [
1285        "wpa_supplicant_cflags_default",
1286        "wpa_supplicant_includes_default",
1287    ],
1288}
1289
1290soong_config_module_type {
1291    name: "wpa_supplicant_cc_binary",
1292    module_type: "cc_binary",
1293    config_namespace: "wpa_supplicant_8",
1294    value_variables: [
1295        "board_wpa_supplicant_private_lib",
1296    ],
1297    bool_variables: [
1298        "wifi_hidl_unified_supplicant_service_rc_entry",
1299    ],
1300    properties: [
1301        "init_rc",
1302        "static_libs",
1303    ],
1304}
1305
1306wpa_supplicant_cc_binary {
1307    name: "wpa_supplicant",
1308    proprietary: true,
1309    relative_install_path: "hw",
1310    // vintf_fragments: wpa_supplicant only
1311    // vintf_fragments: ["aidl/android.hardware.wifi.supplicant.xml"],
1312    required: [
1313        "android.hardware.wifi.supplicant.xml",
1314    ],
1315    // wpa_supplicant only
1316    static_libs: [
1317        "libwpa_aidl",
1318    ],
1319    shared_libs: [
1320        // Share between wpa_supplicant and wpa_supplicant_macsec
1321        "libc",
1322        "libcrypto",
1323        "libcutils",
1324        "libkeystore-engine-wifi-hidl",
1325        "liblog",
1326        "libnl",
1327        "libssl",
1328    ] + [
1329        // wpa_supplicant only
1330        "android.hardware.wifi.supplicant-V4-ndk",
1331        "android.system.keystore2-V1-ndk",
1332        "libbase",
1333        "libbinder_ndk",
1334        "libutils",
1335    ],
1336    defaults: [
1337        "wpa_supplicant_srcs_default",
1338        "wpa_supplicant_cflags_default",
1339        "wpa_supplicant_includes_default",
1340        "wpa_supplicant_usd_defaults",
1341    ],
1342    soong_config_variables: {
1343        board_wpa_supplicant_private_lib: {
1344            static_libs: ["%s"],
1345        },
1346        // init_rc: wpa_supplicant only
1347        wifi_hidl_unified_supplicant_service_rc_entry: {
1348            init_rc: ["aidl/vendor/android.hardware.wifi.supplicant-service.rc"],
1349        },
1350    },
1351}
1352
1353wpa_supplicant_cc_binary {
1354    name: "wpa_supplicant_macsec",
1355    proprietary: true,
1356    relative_install_path: "hw",
1357    srcs: [
1358        // wpa_supplicant_macsec only
1359        ":wpa_supplicant_macsec_extra_driver_srcs",
1360        "wpas_kay.c",
1361        "src/ap/wpa_auth_kay.c",
1362        "src/pae/ieee802_1x_cp.c",
1363        "src/pae/ieee802_1x_kay.c",
1364        "src/pae/ieee802_1x_key.c",
1365        "src/pae/ieee802_1x_secy_ops.c",
1366        "src/pae/aidl/aidl_psk.cpp",
1367    ],
1368    shared_libs: [
1369        // Share between wpa_supplicant and wpa_supplicant_macsec
1370        "libc",
1371        "libcrypto",
1372        "libcutils",
1373        "libkeystore-engine-wifi-hidl",
1374        "liblog",
1375        "libnl",
1376        "libssl",
1377    ] + [
1378        // wpa_supplicant_macsec only
1379        "android.hardware.macsec-V1-ndk",
1380        "libbinder_ndk",
1381    ],
1382    cflags: [
1383        "-DCONFIG_AIDL_MACSEC_PSK_METHODS",
1384        "-DCONFIG_DRIVER_MACSEC_LINUX",
1385        "-DCONFIG_MACSEC",
1386    ],
1387    local_include_dirs: [
1388        // wpa_supplicant_macsec only
1389        "aidl",
1390    ],
1391    defaults: [
1392        "wpa_supplicant_srcs_default",
1393        "wpa_supplicant_includes_default",
1394        "wpa_supplicant_no_aidl_cflags_default",
1395    ],
1396    soong_config_variables: {
1397        board_wpa_supplicant_private_lib: {
1398            static_libs: ["%s"],
1399        },
1400    },
1401}
1402
1403wpa_supplicant_cc_binary {
1404    name: "wpa_supplicant_mainline",
1405    shared_libs: [
1406        "android.system.wifi.mainline_supplicant-ndk",
1407        "libbase",
1408        "libbinder_ndk",
1409        "libc",
1410        "libcrypto",
1411        "libcutils_sockets",
1412        "liblog",
1413        "libnl",
1414        "libssl",
1415    ],
1416    static_libs: [
1417        "mainline_supplicant_aidl_bp",
1418    ],
1419    defaults: [
1420        "wpa_supplicant_mainline_srcs_default",
1421        "wpa_supplicant_includes_default",
1422        "wpa_supplicant_mainline_cflags_default",
1423        "wpa_supplicant_usd_defaults",
1424    ],
1425    apex_available: [
1426        "//apex_available:platform",
1427        "com.android.wifi",
1428    ],
1429    min_sdk_version: "30",
1430}
1431
1432cc_library_shared {
1433    name: "libwpa_client",
1434    proprietary: true,
1435    srcs: [
1436        "src/common/wpa_ctrl.c",
1437        "src/utils/os_unix.c",
1438    ],
1439    shared_libs: [
1440        "libc",
1441        "libcutils",
1442        "liblog",
1443    ],
1444    defaults: [
1445        "wpa_supplicant_cflags_default",
1446        "wpa_supplicant_includes_default",
1447    ],
1448}
1449
1450cc_fuzz {
1451    name: "mainline_supplicant_service_fuzzer",
1452    team: "trendy_team_fwk_wifi_hal",
1453    srcs: [
1454        "aidl/mainline/fuzzers/mainline_supplicant_service_fuzzer.cpp",
1455    ],
1456    defaults: [
1457        "fuzzer_disable_leaks",
1458        "service_fuzzer_defaults",
1459        "wpa_supplicant_includes_default",
1460        "wpa_supplicant_mainline_cflags_default",
1461        "wpa_supplicant_mainline_srcs_default",
1462        "wpa_supplicant_usd_defaults",
1463    ],
1464    shared_libs: [
1465        "android.system.wifi.mainline_supplicant-ndk",
1466        "libbase",
1467        "libbinder_ndk",
1468        "libc",
1469        "libcrypto",
1470        "libcutils_sockets",
1471        "liblog",
1472        "libnl",
1473        "libssl",
1474    ],
1475    static_libs: [
1476        "mainline_supplicant_aidl_bp",
1477    ],
1478    cflags: [
1479        "-DSUPPLICANT_SERVICE_FUZZER",
1480    ],
1481    fuzz_config: {
1482        triage_assignee: "android-wifi-team@google.com",
1483    },
1484    proto: {
1485        type: "lite",
1486        static: true,
1487    },
1488}
1489
1490//## Aidl service library ###
1491//#######################
1492cc_library_static {
1493    name: "libwpa_aidl",
1494    vendor: true,
1495    cppflags: [
1496        "-DCONFIG_NAN_USD",
1497        "-Wall",
1498        "-Werror",
1499        "-Wno-unused-parameter",
1500        "-Wno-unused-private-field",
1501        "-Wno-unused-variable",
1502    ],
1503    srcs: [
1504        "aidl/vendor/aidl.cpp",
1505        "aidl/vendor/aidl_manager.cpp",
1506        "aidl/vendor/certificate_utils.cpp",
1507        "aidl/vendor/iface_config_utils.cpp",
1508        "aidl/vendor/p2p_iface.cpp",
1509        "aidl/vendor/p2p_network.cpp",
1510        "aidl/vendor/sta_iface.cpp",
1511        "aidl/vendor/sta_network.cpp",
1512        "aidl/vendor/supplicant.cpp",
1513    ],
1514    shared_libs: [
1515        "android.hardware.wifi.supplicant-V4-ndk",
1516        "android.system.keystore2-V1-ndk",
1517        "libbinder_ndk",
1518        "libbase",
1519        "libutils",
1520        "liblog",
1521        "libssl",
1522    ],
1523    export_include_dirs: ["aidl"],
1524    defaults: [
1525        "wpa_supplicant_cflags_default",
1526        "wpa_supplicant_includes_default",
1527    ],
1528}
1529
1530// End of non-cuttlefish section
1531
1532genrule {
1533    name: "com.android.hardware.wpa_supplicant.rc-gen",
1534    srcs: ["aidl/vendor/android.hardware.wifi.supplicant-service.rc"],
1535    out: ["com.android.hardware.wpa_supplicant.rc"],
1536    cmd: "sed -E 's@/vendor/bin@/apex/com.android.hardware.wpa_supplicant/bin@' $(in) > $(out)",
1537}
1538
1539prebuilt_etc {
1540    name: "com.android.hardware.wpa_supplicant.rc",
1541    src: ":com.android.hardware.wpa_supplicant.rc-gen",
1542    installable: false,
1543}
1544