Convert wpa_supplicant related module to soong
The conversion skip those condition which not belong to Android to
simplify the conversion, you can reference aosp/3218836 for those unused
if condition in Android.mk which is not put in the CL to preveninting
merge conflict. Also skip hostapd_noaidl due to seems there's no other
place reference it.
Bug: 325571506
Test: m hostapd_cli hostapd libhostapd_aidl wpa_cli wpa_supplicant \
wpa_supplicant_macsec libwpa_client libwpa_aidl libpasn
Flag: EXEMPT refactor
Change-Id: Ic41de8907377144b9aa94322bbfa3ae2667649c9
diff --git a/Android.bp b/Android.bp
index 068630b..a083f89 100644
--- a/Android.bp
+++ b/Android.bp
@@ -64,3 +64,40 @@
"src/wps/http_server.c",
],
}
+
+filegroup {
+ name: "wpa_supplicant_macsec_extra_driver_srcs",
+ srcs: [
+ "src/drivers/driver_macsec_linux.c",
+ "src/drivers/driver_wired_common.c",
+ ],
+}
+
+filegroup {
+ name: "hs20_client_srcs",
+ srcs: [
+ "hs20/client/est.c",
+ "hs20/client/oma_dm_client.c",
+ "hs20/client/osu_client.c",
+ "hs20/client/spp_client.c",
+ "src/common/wpa_ctrl.c",
+ "src/common/wpa_helpers.c",
+ "src/crypto/crypto_internal.c",
+ "src/crypto/md5-internal.c",
+ "src/crypto/sha1-internal.c",
+ "src/crypto/sha256-internal.c",
+ "src/crypto/tls_openssl_ocsp.c",
+ "src/utils/base64.c",
+ "src/utils/browser-wpadebug.c",
+ "src/utils/common.c",
+ "src/utils/eloop.c",
+ "src/utils/http_curl.c",
+ "src/utils/os_unix.c",
+ "src/utils/wpa_debug.c",
+ "src/utils/wpabuf.c",
+ "src/utils/xml-utils.c",
+ "src/utils/xml_libxml2.c",
+ "src/wps/http_server.c",
+ "src/wps/httpread.c",
+ ],
+}
diff --git a/Android.mk b/Android.mk
index bb8326c..ca7a620 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,5 +1,6 @@
S_LOCAL_PATH := $(call my-dir)
+ifdef FORCE_USE_ANDROIDMK_FOR_WPA
ifneq ($(filter VER_0_8_X VER_2_1_DEVEL,$(WPA_SUPPLICANT_VERSION)),)
# The order of the 2 Android.mks does matter!
# TODO: Clean up the Android.mks, reset all the temporary variables at the
@@ -13,3 +14,4 @@
endif #End of Check for platform version
endif #End of Check for target build variant
endif
+endif
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 0000000..321bab6
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,2 @@
+[Builtin Hooks]
+bpfmt = true
diff --git a/hostapd/Android.bp b/hostapd/Android.bp
index fb414d0..4f76a30 100644
--- a/hostapd/Android.bp
+++ b/hostapd/Android.bp
@@ -362,3 +362,345 @@
relative_install_path: "vintf",
installable: false,
}
+
+// For converting the default to soong
+cc_defaults {
+ name: "hostapd_driver_srcs_default",
+ srcs: [
+ "src/drivers/driver_nl80211.c",
+ "src/drivers/driver_nl80211_android.c",
+ "src/drivers/driver_nl80211_capa.c",
+ "src/drivers/driver_nl80211_event.c",
+ "src/drivers/driver_nl80211_monitor.c",
+ "src/drivers/driver_nl80211_scan.c",
+ "src/drivers/linux_ioctl.c",
+ "src/drivers/netlink.c",
+ "src/drivers/rfkill.c",
+ "src/utils/radiotap.c",
+ ],
+}
+
+cc_defaults {
+ name: "hostapd_driver_cflags_default",
+ cflags: [
+ "-DCONFIG_DRIVER_NL80211",
+ ] + select(soong_config_variable("wpa_supplicant_8", "board_wlan_device"), {
+ "bcmdhd": ["-DCONFIG_DRIVER_NL80211_BRCM"],
+ "synadhd": ["-DCONFIG_DRIVER_NL80211_SYNA"],
+ default: ["-DCONFIG_DRIVER_NL80211_QCA"],
+ }),
+}
+
+soong_config_module_type {
+ name: "hostapd_cc_defaults_type",
+ module_type: "cc_defaults",
+ config_namespace: "wpa_supplicant_8",
+ value_variables: [
+ "platform_version",
+ ],
+ properties: ["cflags"],
+}
+
+// Hostap related module share the same CFLAGS
+hostapd_cc_defaults_type {
+ name: "hostapd_cflags_default",
+ cflags: [
+ "-DWPA_IGNORE_CONFIG_ERRORS",
+ "-DANDROID_LOG_NAME=\"hostapd\"",
+ "-Wall",
+ "-Werror",
+ "-Wno-unused-parameter",
+ "-Wno-unused-variable",
+ "-Wno-macro-redefined",
+ "-DANDROID_P2P",
+ "-DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/vendor/wifi/hostapd/sockets\"",
+ "-DCONFIG_CTRL_IFACE_DIR=\"/data/vendor/wifi/hostapd/ctrl\"",
+ "-DCONFIG_HOSTAPD_CLI_HISTORY_DIR=\"/data/vendor/wifi/hostapd\"",
+ "-DHOSTAPD",
+ "-DHOSTAPD_DUMP_STATE",
+ "-DCONFIG_NO_RADIUS",
+ "-DCONFIG_NO_ACCOUNTING",
+ "-DCONFIG_CTRL_IFACE",
+ "-DCONFIG_CTRL_IFACE_UNIX",
+ "-DCONFIG_SAE",
+ "-DCONFIG_IEEE80211AC",
+ "-DCONFIG_WEP",
+ "-DCONFIG_WPS",
+ "-DEAP_SERVER_WSC",
+ "-DCONFIG_DPP",
+ "-DEAP_SERVER_IDENTITY",
+ "-DEAP_SERVER",
+ "-DPKCS12_FUNCS",
+ "-DCRYPTO_RSA_OAEP_SHA256",
+ "-DTLS_DEFAULT_CIPHERS=\"DEFAULT:!EXP:!LOW\"",
+ "-DCONFIG_SHA256",
+ "-DCONFIG_SHA384",
+ "-DCONFIG_SHA512",
+ "-DCONFIG_ECC",
+ "-DCONFIG_NO_RANDOM_POOL",
+ "-DCONFIG_IPV6",
+ "-DCONFIG_JSON",
+ "-DNEED_AP_MLME",
+ "-DCONFIG_INTERWORKING",
+ "-DCONFIG_ACS",
+ "-DCONFIG_ANDROID_LOG",
+ "-DCONFIG_CTRL_IFACE_AIDL",
+ ] + select(soong_config_variable("wpa_supplicant_8", "hostapd_use_stub_lib"), {
+ true: ["-DANDROID_LIB_STUB"],
+ default: [],
+ }) + select(soong_config_variable("wpa_supplicant_8", "hostapd_11ax"), {
+ true: ["-DCONFIG_IEEE80211AX"],
+ default: [],
+ }) + select(soong_config_variable("wpa_supplicant_8", "board_hostapd_config_80211w_mfp_optional"), {
+ true: ["-DENABLE_HOSTAPD_CONFIG_80211W_MFP_OPTIONAL"],
+ default: [],
+ }) + select(soong_config_variable("wpa_supplicant_8", "board_hostapd_private_lib_event"), {
+ true: ["-DANDROID_LIB_EVENT"],
+ default: [],
+ }),
+ arch: {
+ arm: {
+ cflags: [
+ "-mabi=aapcs-linux",
+ ],
+ },
+ },
+ defaults: [
+ "hostapd_driver_cflags_default",
+ ],
+ soong_config_variables: {
+ platform_version: {
+ cflags: ["-DVERSION_STR_POSTFIX=\"-%s\""],
+ },
+ },
+ enabled: select(soong_config_variable("wpa_supplicant_8", "wpa_build_hostapd"), {
+ true: true,
+ default: false,
+ }),
+}
+
+cc_defaults {
+ name: "hostapd_includes_default",
+ local_include_dirs: [
+ ".",
+ "src",
+ "src/utils",
+ ],
+ include_dirs: [
+ // There's an if condition for external/libnl but current code base should always have this.
+ "external/libnl/include",
+ "system/security/keystore/include",
+ ],
+}
+
+cc_defaults {
+ name: "hostapd_srcs_default",
+ srcs: [
+ "main.c",
+ "config_file.c",
+ "src/ap/hostapd.c",
+ "src/ap/wpa_auth_glue.c",
+ "src/ap/drv_callbacks.c",
+ "src/ap/ap_drv_ops.c",
+ "src/ap/utils.c",
+ "src/ap/authsrv.c",
+ "src/ap/ieee802_1x.c",
+ "src/ap/ap_config.c",
+ "src/ap/eap_user_db.c",
+ "src/ap/ieee802_11_auth.c",
+ "src/ap/sta_info.c",
+ "src/ap/wpa_auth.c",
+ "src/ap/tkip_countermeasures.c",
+ "src/ap/ap_mlme.c",
+ "src/ap/wpa_auth_ie.c",
+ "src/ap/preauth_auth.c",
+ "src/ap/pmksa_cache_auth.c",
+ "src/ap/ieee802_11_shared.c",
+ "src/ap/beacon.c",
+ "src/ap/bss_load.c",
+ "src/ap/neighbor_db.c",
+ "src/ap/rrm.c",
+ "src/drivers/drivers.c",
+ "src/utils/eloop.c",
+ "src/utils/common.c",
+ "src/utils/wpa_debug.c",
+ "src/utils/wpabuf.c",
+ "src/utils/os_unix.c",
+ "src/utils/ip_addr.c",
+ "src/utils/crc32.c",
+ "src/common/ieee802_11_common.c",
+ "src/common/wpa_common.c",
+ "src/common/hw_features_common.c",
+ "src/common/ptksa_cache.c",
+ "src/eapol_auth/eapol_auth_sm.c",
+ "src/eapol_auth/eapol_auth_dump.c",
+ "src/ap/vlan_init.c",
+ "src/ap/vlan_ifconfig.c",
+ "src/ap/vlan.c",
+ "src/common/ctrl_iface_common.c",
+ "ctrl_iface.c",
+ "src/ap/ctrl_iface_ap.c",
+ "src/common/sae.c",
+ "src/l2_packet/l2_packet_none.c",
+ "src/utils/uuid.c",
+ "src/ap/wps_hostapd.c",
+ "src/eap_server/eap_server_wsc.c",
+ "src/eap_common/eap_wsc_common.c",
+ "src/wps/wps.c",
+ "src/wps/wps_common.c",
+ "src/wps/wps_attr_parse.c",
+ "src/wps/wps_attr_build.c",
+ "src/wps/wps_attr_process.c",
+ "src/wps/wps_dev_attr.c",
+ "src/wps/wps_enrollee.c",
+ "src/wps/wps_registrar.c",
+ "src/common/dpp.c",
+ "src/common/dpp_auth.c",
+ "src/common/dpp_backup.c",
+ "src/common/dpp_crypto.c",
+ "src/common/dpp_pkex.c",
+ "src/common/dpp_reconfig.c",
+ "src/common/dpp_tcp.c",
+ "src/ap/dpp_hostapd.c",
+ "src/ap/gas_query_ap.c",
+ "eap_register.c",
+ "src/eap_server/eap_server.c",
+ "src/eap_common/eap_common.c",
+ "src/eap_server/eap_server_methods.c",
+ "src/eap_server/eap_server_identity.c",
+ "src/common/dragonfly.c",
+ "src/crypto/crypto_openssl.c",
+ "src/crypto/tls_none.c",
+ "src/crypto/aes-siv.c",
+ "src/crypto/aes-ctr.c",
+ "src/crypto/sha1-prf.c",
+ "src/crypto/sha256-prf.c",
+ "src/crypto/sha256-tlsprf.c",
+ "src/crypto/sha256-kdf.c",
+ "src/crypto/sha384-kdf.c",
+ "src/crypto/sha512-kdf.c",
+ "src/crypto/sha384-prf.c",
+ "src/crypto/sha512-prf.c",
+ "src/tls/asn1.c",
+ "src/crypto/dh_groups.c",
+ "src/utils/base64.c",
+ "src/utils/json.c",
+ "src/ap/wmm.c",
+ "src/ap/ap_list.c",
+ "src/ap/comeback_token.c",
+ "src/pasn/pasn_common.c",
+ "src/pasn/pasn_responder.c",
+ "src/ap/ieee802_11.c",
+ "src/ap/hw_features.c",
+ "src/ap/dfs.c",
+ "src/ap/ieee802_11_ht.c",
+ "src/ap/ieee802_11_vht.c",
+ "src/common/gas.c",
+ "src/ap/gas_serv.c",
+ "src/drivers/driver_common.c",
+ "src/ap/acs.c",
+ ] + select(soong_config_variable("wpa_supplicant_8", "hostapd_11ax"), {
+ true: ["src/ap/ieee802_11_he.c"],
+ default: [],
+ }),
+ defaults: [
+ "hostapd_driver_srcs_default",
+ ],
+}
+
+cc_binary {
+ name: "hostapd_cli",
+ proprietary: true,
+ srcs: [
+ "hostapd_cli.c",
+ "src/common/cli.c",
+ "src/common/wpa_ctrl.c",
+ "src/utils/common.c",
+ "src/utils/edit.c",
+ "src/utils/eloop.c",
+ "src/utils/os_unix.c",
+ "src/utils/wpa_debug.c",
+ ],
+ shared_libs: [
+ "libc",
+ "libcutils",
+ "liblog",
+ ],
+ defaults: [
+ "hostapd_cflags_default",
+ "hostapd_includes_default",
+ ],
+}
+
+soong_config_module_type {
+ name: "hostapd_cc_binary",
+ module_type: "cc_binary",
+ config_namespace: "wpa_supplicant_8",
+ value_variables: [
+ "board_hostapd_private_lib",
+ ],
+ properties: ["static_libs"],
+}
+
+hostapd_cc_binary {
+ name: "hostapd",
+ proprietary: true,
+ relative_install_path: "hw",
+ //vintf_fragments: ["android.hardware.wifi.hostapd.xml"],
+ required: [
+ "android.hardware.wifi.hostapd.xml",
+ ],
+ static_libs: [
+ "libhostapd_aidl",
+ ],
+ shared_libs: [
+ "libc",
+ "libcutils",
+ "liblog",
+ "libcrypto",
+ "libssl",
+ "libnl",
+ "android.hardware.wifi.hostapd-V3-ndk",
+ "android.hardware.wifi.common-V2-ndk",
+ "libbase",
+ "libutils",
+ "libbinder_ndk",
+ ],
+ init_rc: ["hostapd.android.rc"],
+ defaults: [
+ "hostapd_srcs_default",
+ "hostapd_cflags_default",
+ "hostapd_includes_default",
+ ],
+ soong_config_variables: {
+ board_hostapd_private_lib: {
+ static_libs: ["%s"],
+ },
+ },
+}
+
+cc_library_static {
+ name: "libhostapd_aidl",
+ soc_specific: true,
+ srcs: [
+ "aidl/aidl.cpp",
+ "aidl/hostapd.cpp",
+ ],
+ shared_libs: [
+ "android.hardware.wifi.hostapd-V3-ndk",
+ "android.hardware.wifi.common-V2-ndk",
+ "libbinder_ndk",
+ "libbase",
+ "libutils",
+ "liblog",
+ ],
+ export_include_dirs: ["aidl"],
+ cppflags: [
+ "-Wall",
+ "-Werror",
+ ],
+ defaults: [
+ "hostapd_cflags_default",
+ "hostapd_includes_default",
+ ],
+}
diff --git a/hs20/client/Android.bp b/hs20/client/Android.bp
new file mode 100644
index 0000000..3c8383c
--- /dev/null
+++ b/hs20/client/Android.bp
@@ -0,0 +1,61 @@
+//
+// Copyright (C) 2024 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: [
+ "external_wpa_supplicant_8_license",
+ ],
+}
+
+cc_binary {
+ name: "hs20-osu-client",
+ vendor: true,
+ srcs: [
+ ":hs20_client_srcs",
+ ],
+ shared_libs: [
+ "libc",
+ "libcrypto",
+ "libcurl",
+ "libcutils",
+ "liblog",
+ "libssl",
+ "libxml2",
+ ],
+ cflags: [
+ "-DCONFIG_CTRL_IFACE",
+ "-DCONFIG_CTRL_IFACE_UNIX",
+ "-DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\"",
+ "-DCONFIG_DEBUG_FILE",
+ "-DEAP_TLS_OPENSSL",
+ "-Wno-unused-parameter",
+ "-DCONFIG_ANDROID_LOG",
+ "-DANDROID_LOG_NAME=\"hs20-osu-client\"",
+ ],
+ local_include_dirs: [
+ ".",
+ ],
+ include_dirs: [
+ "external/curl/include",
+ "external/libxml2/include",
+ "external/wpa_supplicant_8/src",
+ "external/wpa_supplicant_8/src/common",
+ "external/wpa_supplicant_8/src/utils",
+ ],
+ defaults: [
+ "wpa_supplicant_cflags_default",
+ ],
+}
diff --git a/wpa_supplicant/Android.bp b/wpa_supplicant/Android.bp
index 619e35a..3be5990 100644
--- a/wpa_supplicant/Android.bp
+++ b/wpa_supplicant/Android.bp
@@ -676,3 +676,617 @@
cfi: true,
},
}
+
+// For converting the default to soong
+cc_defaults {
+ name: "wpa_supplicant_driver_srcs_default",
+ srcs: [
+ "src/drivers/driver_nl80211.c",
+ "src/drivers/driver_nl80211_android.c",
+ "src/drivers/driver_nl80211_capa.c",
+ "src/drivers/driver_nl80211_event.c",
+ "src/drivers/driver_nl80211_monitor.c",
+ "src/drivers/driver_nl80211_scan.c",
+ "src/drivers/linux_ioctl.c",
+ "src/drivers/netlink.c",
+ "src/drivers/rfkill.c",
+ "src/utils/radiotap.c",
+ ],
+}
+
+cc_defaults {
+ name: "wpa_supplicant_driver_cflags_default",
+ cflags: [
+ "-DCONFIG_DRIVER_NL80211",
+ // Because the original Android.mk will call hostapd's Android.mk first and it
+ // will make the flag share with wpa_supplicant, keep the original logic in hostapd.
+ ] + select(soong_config_variable("wpa_supplicant_8", "board_wlan_device"), {
+ "bcmdhd": ["-DCONFIG_DRIVER_NL80211_BRCM"],
+ "synadhd": ["-DCONFIG_DRIVER_NL80211_SYNA"],
+ "qcwcn": ["-DCONFIG_DRIVER_NL80211_QCA"],
+ default: ["-DCONFIG_DRIVER_NL80211_QCA"],
+ }),
+}
+
+cc_defaults {
+ name: "wpa_supplicant_includes_default",
+ local_include_dirs: [
+ ".",
+ "src",
+ "src/common",
+ "src/drivers",
+ "src/eap_common",
+ "src/eap_peer",
+ "src/eap_server",
+ "src/eapol_supp",
+ "src/l2_packet",
+ "src/pasn",
+ "src/radius",
+ "src/rsn_supp",
+ "src/tls",
+ "src/utils",
+ "src/wps",
+ ],
+ include_dirs: [
+ // There's an if condition for external/libnl but current code base should always have this.
+ "external/libnl/include",
+ "system/security/keystore/include",
+ ],
+}
+
+soong_config_module_type {
+ name: "wpa_supplicant_cc_defaults_type",
+ module_type: "cc_defaults",
+ config_namespace: "wpa_supplicant_8",
+ value_variables: [
+ "platform_version",
+ ],
+ properties: ["cflags"],
+}
+
+// Hostap related module share the same CFLAGS
+wpa_supplicant_cc_defaults_type {
+ name: "wpa_supplicant_no_aidl_cflags_default",
+ cflags: [
+ "-DANDROID_LOG_NAME=\"wpa_supplicant\"",
+ "-DANDROID_P2P",
+ "-DCONFIG_ACS",
+ "-DCONFIG_ANDROID_LOG",
+ "-DCONFIG_AP",
+ "-DCONFIG_BACKEND_FILE",
+ "-DCONFIG_CTRL_IFACE",
+ "-DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/vendor/wifi/wpa/sockets\"",
+ "-DCONFIG_CTRL_IFACE_DIR=\"/data/vendor/wifi/wpa/sockets\"",
+ "-DCONFIG_CTRL_IFACE_UNIX",
+ "-DCONFIG_DPP",
+ "-DCONFIG_DPP2",
+ "-DCONFIG_DRIVER_NL80211",
+ "-DCONFIG_DRIVER_NL80211_QCA",
+ "-DCONFIG_ECC",
+ "-DCONFIG_ERP",
+ "-DCONFIG_FILS",
+ "-DCONFIG_GAS",
+ "-DCONFIG_GAS_SERVER",
+ "-DCONFIG_HMAC_SHA256_KDF",
+ "-DCONFIG_HMAC_SHA384_KDF",
+ "-DCONFIG_HMAC_SHA512_KDF",
+ "-DCONFIG_HS20",
+ "-DCONFIG_IEEE80211AC",
+ "-DCONFIG_IEEE80211R",
+ "-DCONFIG_INTERWORKING",
+ "-DCONFIG_IPV6",
+ "-DCONFIG_JSON",
+ "-DCONFIG_MBO",
+ "-DCONFIG_NO_ACCOUNTING",
+ "-DCONFIG_NO_RADIUS",
+ "-DCONFIG_NO_RADIUS",
+ "-DCONFIG_NO_RANDOM_POOL",
+ "-DCONFIG_NO_ROAMING",
+ "-DCONFIG_NO_VLAN",
+ "-DCONFIG_OFFCHANNEL",
+ "-DCONFIG_OWE",
+ "-DCONFIG_P2P",
+ "-DCONFIG_PASN",
+ "-DCONFIG_PTKSA_CACHE",
+ "-DCONFIG_SAE",
+ "-DCONFIG_SAE_PK",
+ "-DCONFIG_SHA256",
+ "-DCONFIG_SHA384",
+ "-DCONFIG_SHA512",
+ "-DCONFIG_SMARTCARD",
+ "-DCONFIG_SME",
+ "-DCONFIG_SUITEB",
+ "-DCONFIG_SUITEB192",
+ "-DCONFIG_TDLS",
+ "-DCONFIG_WEP",
+ "-DCONFIG_WIFI_DISPLAY",
+ "-DCONFIG_WNM",
+ "-DCONFIG_WPA_CLI_HISTORY_DIR=\"/data/vendor/wifi/wpa\"",
+ "-DCONFIG_WPS",
+ "-DCONFIG_WPS_ER",
+ "-DCONFIG_WPS_NFC",
+ "-DCONFIG_WPS_OOB",
+ "-DCONFIG_WPS_UPNP",
+ "-DCRYPTO_RSA_OAEP_SHA256",
+ "-DEAP_AKA",
+ "-DEAP_AKA_PRIME",
+ "-DEAP_GTC",
+ "-DEAP_LEAP",
+ "-DEAP_MD5",
+ "-DEAP_MSCHAPv2",
+ "-DEAP_OTP",
+ "-DEAP_PEAP",
+ "-DEAP_PWD",
+ "-DEAP_SERVER",
+ "-DEAP_SERVER_IDENTITY",
+ "-DEAP_SERVER_WSC",
+ "-DEAP_SIM",
+ "-DEAP_TLS",
+ "-DEAP_TLSV1_3",
+ "-DEAP_TLS_OPENSSL",
+ "-DEAP_TTLS",
+ "-DEAP_WSC",
+ "-DIEEE8021X_EAPOL",
+ "-DNEED_AP_MLME",
+ "-DPKCS12_FUNCS",
+ "-DTLS_DEFAULT_CIPHERS=\"DEFAULT:!EXP:!LOW\"",
+ "-DWPA_IGNORE_CONFIG_ERRORS",
+ "-Wall",
+ "-Werror",
+ "-Wno-error=sometimes-uninitialized",
+ "-Wno-incompatible-pointer-types",
+ "-Wno-incompatible-pointer-types-discards-qualifiers",
+ "-Wno-macro-redefined",
+ "-Wno-parentheses-equality",
+ "-Wno-sign-compare",
+ "-Wno-unused-function",
+ "-Wno-unused-parameter",
+ "-Wno-unused-variable",
+ ] + select(soong_config_variable("wpa_supplicant_8", "wpa_supplicant_use_stub_lib"), {
+ true: ["-DANDROID_LIB_STUB"],
+ default: [],
+ }) + select(soong_config_variable("wpa_supplicant_8", "board_hostapd_config_80211w_mfp_optional"), {
+ true: ["-DENABLE_HOSTAPD_CONFIG_80211W_MFP_OPTIONAL"],
+ default: [],
+ }) + select(soong_config_variable("wpa_supplicant_8", "board_wpa_supplicant_private_lib_event"), {
+ true: ["-DANDROID_LIB_EVENT"],
+ default: [],
+ }) + select(soong_config_variable("wpa_supplicant_8", "wifi_priv_cmd_update_mbo_cell_status"), {
+ true: ["-DENABLE_PRIV_CMD_UPDATE_MBO_CELL_STATUS"],
+ default: [],
+ }) + select(soong_config_variable("wpa_supplicant_8", "hostapd_11ax"), {
+ true: ["-DCONFIG_IEEE80211AX"],
+ default: [],
+ }) + select(soong_config_variable("wpa_supplicant_8", "wifi_brcm_open_source_multi_akm"), {
+ true: ["-DWIFI_BRCM_OPEN_SOURCE_MULTI_AKM"],
+ default: [],
+ }),
+ arch: {
+ arm: {
+ cflags: [
+ "-mabi=aapcs-linux",
+ ],
+ },
+ },
+ defaults: [
+ "wpa_supplicant_driver_cflags_default",
+ ],
+ soong_config_variables: {
+ platform_version: {
+ cflags: ["-DVERSION_STR_POSTFIX=\"-%s\""],
+ },
+ },
+}
+
+cc_defaults {
+ name: "wpa_supplicant_cflags_default",
+ cflags: [
+ "-DCONFIG_AIDL",
+ "-DCONFIG_CTRL_IFACE_AIDL",
+ ],
+ defaults: [
+ "wpa_supplicant_no_aidl_cflags_default",
+ ],
+}
+
+cc_defaults {
+ name: "wpa_supplicant_srcs_default",
+ srcs: [
+ "ap.c",
+ "bss.c",
+ "bssid_ignore.c",
+ "config.c",
+ "config_file.c",
+ "ctrl_iface.c",
+ "ctrl_iface_unix.c",
+ "dpp_supplicant.c",
+ "eap_register.c",
+ "events.c",
+ "gas_query.c",
+ "hs20_supplicant.c",
+ "interworking.c",
+ "main.c",
+ "mbo.c",
+ "notify.c",
+ "offchannel.c",
+ "op_classes.c",
+ "p2p_supplicant.c",
+ "p2p_supplicant_sd.c",
+ "pasn_supplicant.c",
+ "robust_av.c",
+ "rrm.c",
+ "scan.c",
+ "sme.c",
+ "twt.c",
+ "wifi_display.c",
+ "wmm_ac.c",
+ "wnm_sta.c",
+ "wpa_supplicant.c",
+ "wpas_glue.c",
+ "wps_supplicant.c",
+ "src/ap/acs.c",
+ "src/ap/ap_config.c",
+ "src/ap/ap_drv_ops.c",
+ "src/ap/ap_list.c",
+ "src/ap/ap_mlme.c",
+ "src/ap/authsrv.c",
+ "src/ap/beacon.c",
+ "src/ap/bss_load.c",
+ "src/ap/comeback_token.c",
+ "src/ap/ctrl_iface_ap.c",
+ "src/ap/dfs.c",
+ "src/ap/dpp_hostapd.c",
+ "src/ap/drv_callbacks.c",
+ "src/ap/eap_user_db.c",
+ "src/ap/fils_hlp.c",
+ "src/ap/gas_query_ap.c",
+ "src/ap/gas_serv.c",
+ "src/ap/hostapd.c",
+ "src/ap/hs20.c",
+ "src/ap/hw_features.c",
+ "src/ap/ieee802_11.c",
+ "src/ap/ieee802_11_auth.c",
+ "src/ap/ieee802_11_ht.c",
+ "src/ap/ieee802_11_shared.c",
+ "src/ap/ieee802_11_vht.c",
+ "src/ap/ieee802_1x.c",
+ "src/ap/mbo_ap.c",
+ "src/ap/neighbor_db.c",
+ "src/ap/p2p_hostapd.c",
+ "src/ap/pmksa_cache_auth.c",
+ "src/ap/rrm.c",
+ "src/ap/sta_info.c",
+ "src/ap/tkip_countermeasures.c",
+ "src/ap/utils.c",
+ "src/ap/wmm.c",
+ "src/ap/wpa_auth.c",
+ "src/ap/wpa_auth_glue.c",
+ "src/ap/wpa_auth_ie.c",
+ "src/ap/wps_hostapd.c",
+ "src/common/ctrl_iface_common.c",
+ "src/common/dpp.c",
+ "src/common/dpp_auth.c",
+ "src/common/dpp_backup.c",
+ "src/common/dpp_crypto.c",
+ "src/common/dpp_pkex.c",
+ "src/common/dpp_reconfig.c",
+ "src/common/dpp_tcp.c",
+ "src/common/dragonfly.c",
+ "src/common/gas.c",
+ "src/common/gas_server.c",
+ "src/common/hw_features_common.c",
+ "src/common/ieee802_11_common.c",
+ "src/common/ptksa_cache.c",
+ "src/common/sae.c",
+ "src/common/sae_pk.c",
+ "src/common/wpa_common.c",
+ "src/crypto/aes-ctr.c",
+ "src/crypto/aes-siv.c",
+ "src/crypto/crypto_openssl.c",
+ "src/crypto/dh_groups.c",
+ "src/crypto/fips_prf_openssl.c",
+ "src/crypto/ms_funcs.c",
+ "src/crypto/sha1-prf.c",
+ "src/crypto/sha1-tlsprf.c",
+ "src/crypto/sha256-kdf.c",
+ "src/crypto/sha256-prf.c",
+ "src/crypto/sha256-tlsprf.c",
+ "src/crypto/sha384-kdf.c",
+ "src/crypto/sha384-prf.c",
+ "src/crypto/sha512-kdf.c",
+ "src/crypto/sha512-prf.c",
+ "src/crypto/tls_openssl.c",
+ "src/crypto/tls_openssl_ocsp.c",
+ "src/drivers/driver_common.c",
+ "src/drivers/driver_nl80211.c",
+ "src/drivers/driver_nl80211_android.c",
+ "src/drivers/driver_nl80211_capa.c",
+ "src/drivers/driver_nl80211_event.c",
+ "src/drivers/driver_nl80211_monitor.c",
+ "src/drivers/driver_nl80211_scan.c",
+ "src/drivers/drivers.c",
+ "src/drivers/linux_ioctl.c",
+ "src/drivers/netlink.c",
+ "src/drivers/rfkill.c",
+ "src/eap_common/chap.c",
+ "src/eap_common/eap_common.c",
+ "src/eap_common/eap_peap_common.c",
+ "src/eap_common/eap_pwd_common.c",
+ "src/eap_common/eap_sim_common.c",
+ "src/eap_common/eap_wsc_common.c",
+ "src/eap_peer/eap.c",
+ "src/eap_peer/eap_aka.c",
+ "src/eap_peer/eap_gtc.c",
+ "src/eap_peer/eap_leap.c",
+ "src/eap_peer/eap_md5.c",
+ "src/eap_peer/eap_methods.c",
+ "src/eap_peer/eap_mschapv2.c",
+ "src/eap_peer/eap_otp.c",
+ "src/eap_peer/eap_peap.c",
+ "src/eap_peer/eap_pwd.c",
+ "src/eap_peer/eap_sim.c",
+ "src/eap_peer/eap_tls.c",
+ "src/eap_peer/eap_tls_common.c",
+ "src/eap_peer/eap_ttls.c",
+ "src/eap_peer/eap_wsc.c",
+ "src/eap_peer/mschapv2.c",
+ "src/eap_server/eap_server.c",
+ "src/eap_server/eap_server_identity.c",
+ "src/eap_server/eap_server_methods.c",
+ "src/eap_server/eap_server_wsc.c",
+ "src/eapol_auth/eapol_auth_sm.c",
+ "src/eapol_supp/eapol_supp_sm.c",
+ "src/l2_packet/l2_packet_linux.c",
+ "src/p2p/p2p.c",
+ "src/p2p/p2p_build.c",
+ "src/p2p/p2p_dev_disc.c",
+ "src/p2p/p2p_go_neg.c",
+ "src/p2p/p2p_group.c",
+ "src/p2p/p2p_invitation.c",
+ "src/p2p/p2p_parse.c",
+ "src/p2p/p2p_pd.c",
+ "src/p2p/p2p_sd.c",
+ "src/p2p/p2p_utils.c",
+ "src/pasn/pasn_common.c",
+ "src/pasn/pasn_initiator.c",
+ "src/pasn/pasn_responder.c",
+ "src/rsn_supp/pmksa_cache.c",
+ "src/rsn_supp/preauth.c",
+ "src/rsn_supp/tdls.c",
+ "src/rsn_supp/wpa.c",
+ "src/rsn_supp/wpa_ft.c",
+ "src/rsn_supp/wpa_ie.c",
+ "src/tls/asn1.c",
+ "src/utils/base64.c",
+ "src/utils/bitfield.c",
+ "src/utils/common.c",
+ "src/utils/config.c",
+ "src/utils/crc32.c",
+ "src/utils/eloop.c",
+ "src/utils/ip_addr.c",
+ "src/utils/json.c",
+ "src/utils/os_unix.c",
+ "src/utils/radiotap.c",
+ "src/utils/uuid.c",
+ "src/utils/wpa_debug.c",
+ "src/utils/wpabuf.c",
+ "src/wps/http_client.c",
+ "src/wps/http_server.c",
+ "src/wps/httpread.c",
+ "src/wps/ndef.c",
+ "src/wps/upnp_xml.c",
+ "src/wps/wps.c",
+ "src/wps/wps_attr_build.c",
+ "src/wps/wps_attr_parse.c",
+ "src/wps/wps_attr_process.c",
+ "src/wps/wps_common.c",
+ "src/wps/wps_dev_attr.c",
+ "src/wps/wps_enrollee.c",
+ "src/wps/wps_er.c",
+ "src/wps/wps_er_ssdp.c",
+ "src/wps/wps_registrar.c",
+ "src/wps/wps_upnp.c",
+ "src/wps/wps_upnp_ap.c",
+ "src/wps/wps_upnp_event.c",
+ "src/wps/wps_upnp_ssdp.c",
+ "src/wps/wps_upnp_web.c",
+ ] + select(soong_config_variable("wpa_supplicant_8", "hostapd_11ax"), {
+ true: ["src/ap/ieee802_11_he.c"],
+ default: [],
+ }),
+ defaults: [
+ "wpa_supplicant_driver_srcs_default",
+ ],
+}
+
+cc_binary {
+ name: "wpa_cli",
+ proprietary: true,
+ srcs: [
+ "wpa_cli.c",
+ "src/common/cli.c",
+ "src/common/wpa_ctrl.c",
+ "src/utils/common.c",
+ "src/utils/edit.c",
+ "src/utils/eloop.c",
+ "src/utils/os_unix.c",
+ "src/utils/wpa_debug.c",
+ ],
+ shared_libs: [
+ "libcutils",
+ "liblog",
+ ],
+ defaults: [
+ "wpa_supplicant_cflags_default",
+ "wpa_supplicant_includes_default",
+ ],
+}
+
+soong_config_module_type {
+ name: "wpa_supplicant_cc_binary",
+ module_type: "cc_binary",
+ config_namespace: "wpa_supplicant_8",
+ value_variables: [
+ "board_wpa_supplicant_private_lib",
+ ],
+ bool_variables: [
+ "wifi_hidl_unified_supplicant_service_rc_entry",
+ ],
+ properties: [
+ "init_rc",
+ "static_libs",
+ ],
+}
+
+wpa_supplicant_cc_binary {
+ name: "wpa_supplicant",
+ proprietary: true,
+ relative_install_path: "hw",
+ // vintf_fragments: wpa_supplicant only
+ // vintf_fragments: ["aidl/android.hardware.wifi.supplicant.xml"],
+ required: [
+ "android.hardware.wifi.supplicant.xml",
+ ],
+ // wpa_supplicant only
+ static_libs: [
+ "libwpa_aidl",
+ ],
+ shared_libs: [
+ // Share between wpa_supplicant and wpa_supplicant_macsec
+ "libc",
+ "libcrypto",
+ "libcutils",
+ "libkeystore-engine-wifi-hidl",
+ "liblog",
+ "libnl",
+ "libssl",
+ ] + [
+ // wpa_supplicant only
+ "android.hardware.wifi.supplicant-V4-ndk",
+ "android.system.keystore2-V1-ndk",
+ "libbase",
+ "libbinder_ndk",
+ "libutils",
+ ],
+ defaults: [
+ "wpa_supplicant_srcs_default",
+ "wpa_supplicant_cflags_default",
+ "wpa_supplicant_includes_default",
+ ],
+ soong_config_variables: {
+ board_wpa_supplicant_private_lib: {
+ static_libs: ["%s"],
+ },
+ // init_rc: wpa_supplicant only
+ wifi_hidl_unified_supplicant_service_rc_entry: {
+ init_rc: ["aidl/android.hardware.wifi.supplicant-service.rc"],
+ },
+ },
+}
+
+wpa_supplicant_cc_binary {
+ name: "wpa_supplicant_macsec",
+ proprietary: true,
+ relative_install_path: "hw",
+ srcs: [
+ // wpa_supplicant_macsec only
+ ":wpa_supplicant_macsec_extra_driver_srcs",
+ "wpas_kay.c",
+ "src/ap/wpa_auth_kay.c",
+ "src/pae/ieee802_1x_cp.c",
+ "src/pae/ieee802_1x_kay.c",
+ "src/pae/ieee802_1x_key.c",
+ "src/pae/ieee802_1x_secy_ops.c",
+ "src/pae/aidl/aidl_psk.cpp",
+ ],
+ shared_libs: [
+ // Share between wpa_supplicant and wpa_supplicant_macsec
+ "libc",
+ "libcrypto",
+ "libcutils",
+ "libkeystore-engine-wifi-hidl",
+ "liblog",
+ "libnl",
+ "libssl",
+ ] + [
+ // wpa_supplicant_macsec only
+ "android.hardware.macsec-V1-ndk",
+ "libbinder_ndk",
+ ],
+ cflags: [
+ "-DCONFIG_AIDL_MACSEC_PSK_METHODS",
+ "-DCONFIG_DRIVER_MACSEC_LINUX",
+ "-DCONFIG_MACSEC",
+ ],
+ local_include_dirs: [
+ // wpa_supplicant_macsec only
+ "aidl",
+ ],
+ defaults: [
+ "wpa_supplicant_srcs_default",
+ "wpa_supplicant_includes_default",
+ "wpa_supplicant_no_aidl_cflags_default",
+ ],
+ soong_config_variables: {
+ board_wpa_supplicant_private_lib: {
+ static_libs: ["%s"],
+ },
+ },
+}
+
+cc_library_shared {
+ name: "libwpa_client",
+ proprietary: true,
+ srcs: [
+ "src/common/wpa_ctrl.c",
+ "src/utils/os_unix.c",
+ ],
+ shared_libs: [
+ "libc",
+ "libcutils",
+ "liblog",
+ ],
+ defaults: [
+ "wpa_supplicant_cflags_default",
+ "wpa_supplicant_includes_default",
+ ],
+}
+
+//## Aidl service library ###
+//#######################
+cc_library_static {
+ name: "libwpa_aidl",
+ vendor: true,
+ cppflags: [
+ "-Wall",
+ "-Werror",
+ "-Wno-unused-parameter",
+ "-Wno-unused-private-field",
+ "-Wno-unused-variable",
+ ],
+ srcs: [
+ "aidl/aidl.cpp",
+ "aidl/aidl_manager.cpp",
+ "aidl/certificate_utils.cpp",
+ "aidl/iface_config_utils.cpp",
+ "aidl/p2p_iface.cpp",
+ "aidl/p2p_network.cpp",
+ "aidl/sta_iface.cpp",
+ "aidl/sta_network.cpp",
+ "aidl/supplicant.cpp",
+ ],
+ shared_libs: [
+ "android.hardware.wifi.supplicant-V4-ndk",
+ "android.system.keystore2-V1-ndk",
+ "libbinder_ndk",
+ "libbase",
+ "libutils",
+ "liblog",
+ "libssl",
+ ],
+ export_include_dirs: ["aidl"],
+ defaults: [
+ "wpa_supplicant_cflags_default",
+ "wpa_supplicant_includes_default",
+ ],
+}