// Copyright (C) 2021 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 { default_applicable_licenses: [ "external_wpa_supplicant_8_license", "external_wpa_supplicant_8_hostapd_license", ], } license { name: "external_wpa_supplicant_8_hostapd_license", visibility: [":__subpackages__"], license_kinds: [ "SPDX-license-identifier-BSD-3-Clause", "SPDX-license-identifier-ISC", "legacy_unencumbered", ], } cc_library_headers { name: "hostapd_headers", export_include_dirs: [ ".", "src", "src/utils", ], soc_specific: true, } cc_defaults { name: "hostapd_defaults", defaults: ["hostapd_cflags_defaults"], srcs: [":hostapd_srcs"], shared_libs: [ "android.hardware.wifi.hostapd-V2-ndk", "libbase", "libutils", "libbinder_ndk", "libc", "libcutils", "liblog", "libcrypto", "libssl", "libnl", ], relative_install_path: "hw", soc_specific: true, static_libs: [ "libhostapd_aidl_bp", ], header_libs: [ "hostapd_headers", "libhostapd_aidl_headers", ], } cc_defaults { name: "hostapd_cflags_defaults", // Generated by building hostapd and printing LOCAL_CFLAGS. cflags: [ "-DWPA_IGNORE_CONFIG_ERRORS", "-DANDROID_LOG_NAME=\"hostapd\"", "-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_SUITEB", "-DCONFIG_SUITEB192", "-DCONFIG_IEEE80211R", "-DCONFIG_IEEE80211R_AP", "-DCONFIG_ETH_P_OUI", "-DCONFIG_SAE", "-DCONFIG_SAE_PK", "-DCONFIG_OWE", "-DCONFIG_FILS", "-DCONFIG_WNM", "-DCONFIG_WNM_AP", "-DCONFIG_IEEE80211AC", "-DCONFIG_MBO", "-DCONFIG_WEP", "-DCONFIG_DRIVER_NL80211", "-DEAP_SERVER_MD5", "-DEAP_SERVER_TLS", "-DEAP_SERVER_PEAP", "-DEAP_SERVER_TTLS", "-DEAP_SERVER_MSCHAPV2", "-DEAP_SERVER_GTC", "-DEAP_SERVER_SIM", "-DEAP_SERVER_AKA", "-DEAP_SERVER_AKA_PRIME", "-DEAP_SERVER_PWD", "-DCONFIG_WPS", "-DEAP_SERVER_WSC", "-DCONFIG_WPS_NFC", "-DCONFIG_WPS_OOB", "-DCONFIG_DPP", "-DCONFIG_DPP2", "-DEAP_SERVER_IDENTITY", "-DEAP_SERVER", "-DPKCS12_FUNCS", "-DEAP_TLS_FUNCS", "-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_HS20", "-DCONFIG_INTERWORKING", "-DCONFIG_PROXYARP", "-DCONFIG_ACS", "-DCONFIG_ANDROID_LOG", "-DCONFIG_CTRL_IFACE_AIDL", "-Wall", "-Werror", "-Wno-unused-parameter", "-Wno-unused-variable", "-Wno-macro-redefined", ] + // Devices that include this module should set these soong config vars appropriately. // For example: // $(call soong_config_set, hostapd, platform_version, $(PLATFORM_VERSION)) // $(call soong_config_set, hostapd, nl80211_driver, CONFIG_DRIVER_NL80211_QCA) select(soong_config_variable("hostapd", "platform_version"), { any @ version: ["-DVERSION_STR_POSTFIX=\"-" + version + "\""], default: ["-DVERSION_STR_POSTFIX=\"-Android\""], }) + select(soong_config_variable("hostapd", "nl80211_driver"), { any @ driver: ["-D" + driver], // Flag is optional, so no default value provided. default: [], }), // Similar to suppressing clang compiler warnings, here we // suppress clang-tidy warnings to reduce noises in Android build.log. tidy_checks: [ "-android-cloexec-*", "-bugprone-branch-clone", "-bugprone-macro-parentheses", "-bugprone-misplaced-widening-cast", "-bugprone-signal-handler", "-bugprone-signed-char-misuse", "-bugprone-sizeof-expression", "-bugprone-suspicious-string-compare", "-bugprone-too-small-loop-variable", "-cert-err34-c", "-cert-msc30-c", "-cert-msc50-cpp", "-cert-msc54-cpp", "-cert-sig30-c", "-cert-str34-c", "-clang-analyzer-core.NullDereference", "-clang-analyzer-core.UndefinedBinaryOperatorResult", "-clang-analyzer-deadcode.DeadStores", "-clang-analyzer-optin.performance.Padding", "-clang-analyzer-optin.portability.UnixAPI", "-clang-analyzer-security.insecureAPI.UncheckedReturn", "-clang-analyzer-unix.cstring.NullArg", "-clang-analyzer-unix.Malloc", "-clang-diagnostic-unused-but-set-variable", "-misc-redundant-expression", ], } // Generated by building hostapd and printing LOCAL_SRC_FILES. filegroup { name: "hostapd_srcs", srcs: [ "main.c", "config_file.c", "ctrl_iface.c", "eap_register.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/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", "src/ap/ctrl_iface_ap.c", "src/ap/wpa_auth_ft.c", "src/ap/eth_p_oui.c", "src/common/sae.c", "src/common/sae_pk.c", "src/ap/fils_hlp.c", "src/ap/wnm_ap.c", "src/ap/mbo_ap.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/netlink.c", "src/drivers/rfkill.c", "src/utils/radiotap.c", "src/drivers/linux_ioctl.c", "src/l2_packet/l2_packet_linux.c", "src/eap_server/eap_server_md5.c", "src/eap_server/eap_server_tls.c", "src/eap_server/eap_server_peap.c", "src/eap_common/eap_peap_common.c", "src/eap_server/eap_server_ttls.c", "src/eap_server/eap_server_mschapv2.c", "src/eap_server/eap_server_gtc.c", "src/eap_server/eap_server_sim.c", "src/eap_server/eap_server_aka.c", "src/eap_common/eap_sim_common.c", "src/eap_server/eap_sim_db.c", "src/eap_server/eap_server_pwd.c", "src/eap_common/eap_pwd_common.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/wps/ndef.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", "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/ms_funcs.c", "src/eap_common/chap.c", "src/eap_server/eap_server_tls_common.c", "src/crypto/tls_openssl.c", "src/crypto/tls_openssl_ocsp.c", "src/crypto/crypto_openssl.c", "src/crypto/fips_prf_openssl.c", "src/crypto/aes-siv.c", "src/crypto/aes-ctr.c", "src/crypto/sha1-prf.c", "src/crypto/sha1-tlsprf.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_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/ap/hs20.c", "src/common/gas.c", "src/ap/gas_serv.c", "src/ap/x_snoop.c", "src/ap/dhcp_snoop.c", "src/ap/ndisc_snoop.c", "src/drivers/driver_common.c", "src/ap/acs.c", ], } // This manifest can used by a vendor apex module for hostapd as well. vintf_fragment { name: "android.hardware.wifi.hostapd.xml", src: "android.hardware.wifi.hostapd.xml", soc_specific: true, } // Generated by building hostapd_cli and printing LOCAL_SRC_FILES filegroup { name: "hostapd_cli_srcs", 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", ], } prebuilt_etc { name: "android.hardware.wifi.hostapd.xml.prebuilt", src: "android.hardware.wifi.hostapd.xml", relative_install_path: "vintf", installable: false, }