// 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: ["Android-Apache-2.0"], } soong_config_module_type { name: "wifi_cc_defaults", module_type: "cc_defaults", config_namespace: "wifi", bool_variables: [ "multiple_vendor_hals", // WIFI_MULTIPLE_VENDOR_HALS "google_wifi_config_lib", // $(wildcard vendor/google/libraries/GoogleWifiConfigLib) ], value_variables: [ "driver_module_path", // WIFI_DRIVER_MODULE_PATH "driver_module_arg", // WIFI_DRIVER_MODULE_ARG "driver_module_name", // WIFI_DRIVER_MODULE_NAME "driver_fw_path_sta", // WIFI_DRIVER_FW_PATH_STA "driver_fw_path_ap", // WIFI_DRIVER_FW_PATH_AP "driver_fw_path_p2p", // WIFI_DRIVER_FW_PATH_P2P "driver_fw_path_param", // WIFI_DRIVER_FW_PATH_PARAM "driver_state_ctrl_param", // WIFI_DRIVER_STATE_CTRL_PARAM "driver_state_on", // WIFI_DRIVER_STATE_ON "driver_state_off", // WIFI_DRIVER_STATE_OFF ], variables: [ "board_wlan_device", // BOARD_WLAN_DEVICE ], properties: [ "cflags", "defaults", "shared_libs", "whole_static_libs", ], } soong_config_string_variable { name: "board_wlan_device", values: [ "bcmdhd", "synadhd", "qcwcn", "mrvl", "nxp", "MediaTek", "realtek", "emulator", "rtl", "slsi", "wlan0", ], } wifi_cc_defaults { name: "libwifi_hal_cflags_defaults", cflags: [ "-Wall", "-Werror", "-Wextra", "-Winit-self", "-Wno-unused-function", "-Wno-unused-parameter", "-Wshadow", "-Wunused-variable", "-Wwrite-strings", ], soong_config_variables: { driver_module_path: { cflags: ["-DWIFI_DRIVER_MODULE_PATH=%s"], }, driver_module_arg: { cflags: ["-DWIFI_DRIVER_MODULE_ARG=%s"], }, driver_module_name: { cflags: ["-DWIFI_DRIVER_MODULE_NAME=%s"], }, driver_fw_path_sta: { cflags: ["-DWIFI_DRIVER_FW_PATH_STA=%s"], }, driver_fw_path_ap: { cflags: ["-DWIFI_DRIVER_FW_PATH_AP=%s"], }, driver_fw_path_p2p: { cflags: ["-DWIFI_DRIVER_FW_PATH_P2P=%s"], }, // Some devices use a different path (e.g. devices with broadcom WiFi parts). driver_fw_path_param: { cflags: ["-DWIFI_DRIVER_FW_PATH_PARAM=%s"], conditions_default: { cflags: ["-DWIFI_DRIVER_FW_PATH_PARAM=\"/sys/module/wlan/parameters/fwpath\""], }, }, driver_state_ctrl_param: { cflags: ["-DWIFI_DRIVER_STATE_CTRL_PARAM=%s"], }, driver_state_on: { cflags: ["-DWIFI_DRIVER_STATE_ON=%s"], }, driver_state_off: { cflags: ["-DWIFI_DRIVER_STATE_OFF=%s"], }, multiple_vendor_hals: { cflags: ["-DWIFI_MULTIPLE_VENDOR_HALS"], } }, } // Common code shared between the HALs. cc_library_static { name: "libwifi-hal-common", vendor: true, defaults: ["libwifi_hal_cflags_defaults"], srcs: ["wifi_hal_common.cpp"], shared_libs: ["libbase"], header_libs: ["libcutils_headers"], local_include_dirs: ["include"], } // A fallback "vendor" HAL library. // Don't link this, link libwifi-hal. cc_library_static { name: "libwifi-hal-fallback", vendor: true, defaults: ["libwifi_hal_cflags_defaults"], srcs: ["wifi_hal_fallback.cpp"], header_libs: ["libhardware_legacy_headers"] } wifi_cc_defaults { name: "google_wifi_config_lib_defaults", soong_config_variables: { google_wifi_config_lib: { shared_libs: ["google_wifi_firmware_config_version_c_wrapper"], }, }, } wifi_cc_defaults { name: "libwifi_hal_vendor_impl_defaults", soong_config_variables: { board_wlan_device: { bcmdhd: { whole_static_libs: ["libwifi-hal-bcm"], }, synadhd: { whole_static_libs: ["libwifi-hal-syna"], }, qcwcn: { whole_static_libs: ["libwifi-hal-qcom"], }, mrvl: { // this is commented because none of the nexus devices // that sport Marvell's wifi have support for HAL // whole_static_libs: ["libwifi-hal-mrvl"], }, mediaTek: { whole_static_libs: ["libwifi-hal-mt66xx"], }, realtek: { whole_static_libs: ["libwifi-hal-rtk"], }, emulator: { whole_static_libs: ["//device/generic/goldfish:libwifi-hal-emu"], }, slsi: { whole_static_libs: ["libwifi-hal-slsi"], }, conditions_default: { whole_static_libs: ["libwifi-hal-fallback"], }, }, }, } wifi_cc_defaults { name: "libwifi_hal_vendor_deps_defaults", soong_config_variables: { board_wlan_device: { bcmdhd: { shared_libs: ["libcrypto"], defaults: ["google_wifi_config_lib_defaults"], }, synadhd: { shared_libs: ["libcrypto"], defaults: ["google_wifi_config_lib_defaults"], }, qcwcn: { shared_libs: ["libcld80211", "libcrypto"], }, }, }, } cc_library_shared { name: "libwifi-hal", proprietary: true, compile_multilib: "first", defaults: [ "libwifi_hal_cflags_defaults", "libwifi_hal_vendor_deps_defaults", // shared_libs used by libwifi-hal- "libwifi_hal_vendor_impl_defaults", ], local_include_dirs: ["include"], export_include_dirs: ["include"], header_libs: ["libhardware_legacy_headers"], export_header_lib_headers: ["libhardware_legacy_headers"], shared_libs: [ "libbase", "libcutils", "liblog", "libnl", "libutils", ], srcs: [ "driver_tool.cpp", "hal_tool.cpp", ], whole_static_libs: ["libwifi-hal-common"], // b/242259479 remove this sanitize: { cfi: true, integer_overflow: true, }, } // Expose make-built libwifi-hal- via wifi_cc_prebuilt_library_static. // Licenses for imported libwifi-hal- libraries license { name: "libwifi_hal_apache20_license", visibility: [":__subpackages__"], license_kinds: [ "SPDX-license-identifier-Apache-2.0", ], } license { name: "libwifi_hal_bsd_license", visibility: [":__subpackages__"], license_kinds: [ "SPDX-license-identifier-BSD", ], } // Additional soong_config_module_types to enable/disable according to BOARD_WLAN_DEVICE // If libwifi-hal- libs are migrated to soong modules, these are not necessary. soong_config_module_type { name: "wifi_cc_prebuilt_library_static", module_type: "cc_prebuilt_library_static", config_namespace: "wifi", variables: [ "board_wlan_device", // BOARD_WLAN_DEVICE ], properties: [ "enabled", ], } soong_config_module_type { name: "wifi_cc_prebuilt_library_shared", module_type: "cc_prebuilt_library_shared", config_namespace: "wifi", variables: [ "board_wlan_device", // BOARD_WLAN_DEVICE ], properties: [ "enabled", ], } soong_config_module_type { name: "wifi_makefile_goal", module_type: "makefile_goal", config_namespace: "wifi", variables: [ "board_wlan_device", // BOARD_WLAN_DEVICE ], properties: [ "enabled", ], } // libwifi-hal-syna wifi_cc_prebuilt_library_static { name: "libwifi-hal-syna", proprietary: true, srcs: [":make-libwifi-hal-syna"], compile_multilib: "first", installable: false, licenses: ["libwifi_hal_apache20_license"], enabled: false, soong_config_variables: { board_wlan_device: { synadhd: { enabled: true, }, }, }, } wifi_makefile_goal { name: "make-libwifi-hal-syna", product_out_path: "obj/STATIC_LIBRARIES/libwifi-hal-syna_intermediates/libwifi-hal-syna.a", enabled: false, soong_config_variables: { board_wlan_device: { synadhd: { enabled: true, }, }, }, } // libwifi-hal-qcom wifi_cc_prebuilt_library_static { name: "libwifi-hal-qcom", proprietary: true, srcs: [":make-libwifi-hal-qcom"], compile_multilib: "first", installable: false, licenses: ["libwifi_hal_apache20_license", "libwifi_hal_bsd_license"], enabled: false, soong_config_variables: { board_wlan_device: { qcwcn: { enabled: true, }, }, }, } wifi_makefile_goal { name: "make-libwifi-hal-qcom", product_out_path: "obj/STATIC_LIBRARIES/libwifi-hal-qcom_intermediates/libwifi-hal-qcom.a", enabled: false, soong_config_variables: { board_wlan_device: { qcwcn: { enabled: true, }, }, }, } // libcld80211 wifi_cc_prebuilt_library_shared { name: "libcld80211", vendor: true, srcs: [":make-libcld80211"], compile_multilib: "first", installable: false, licenses: ["libwifi_hal_bsd_license"], enabled: false, soong_config_variables: { board_wlan_device: { qcwcn: { enabled: true, }, }, }, } wifi_makefile_goal { name: "make-libcld80211", product_out_path: "obj/SHARED_LIBRARIES/libcld80211_intermediates/LINKED/libcld80211.so", enabled: false, soong_config_variables: { board_wlan_device: { qcwcn: { enabled: true, }, }, }, } // libwifi-hal-mt66xx wifi_cc_prebuilt_library_static { name: "libwifi-hal-mt66xx", proprietary: true, srcs: [":make-libwifi-hal-mt66xx"], compile_multilib: "first", installable: false, licenses: ["libwifi_hal_apache20_license"], enabled: false, soong_config_variables: { board_wlan_device: { mediaTek: { enabled: true, }, }, }, } wifi_makefile_goal { name: "make-libwifi-hal-mt66xx", product_out_path: "obj/STATIC_LIBRARIES/libwifi-hal-mt66xx_intermediates/libwifi-hal-mt66xx.a", enabled: false, soong_config_variables: { board_wlan_device: { mediaTek: { enabled: true, }, }, }, }