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