1# Copyright (C) 2016 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 15LOCAL_PATH := $(call my-dir) 16 17wifi_hal_cflags := \ 18 -Wall \ 19 -Werror \ 20 -Wextra \ 21 -Winit-self \ 22 -Wno-unused-function \ 23 -Wno-unused-parameter \ 24 -Wshadow \ 25 -Wunused-variable \ 26 -Wwrite-strings 27ifdef WIFI_DRIVER_MODULE_PATH 28wifi_hal_cflags += -DWIFI_DRIVER_MODULE_PATH=\"$(WIFI_DRIVER_MODULE_PATH)\" 29endif 30ifdef WIFI_DRIVER_MODULE_ARG 31wifi_hal_cflags += -DWIFI_DRIVER_MODULE_ARG=\"$(WIFI_DRIVER_MODULE_ARG)\" 32endif 33ifdef WIFI_DRIVER_MODULE_NAME 34wifi_hal_cflags += -DWIFI_DRIVER_MODULE_NAME=\"$(WIFI_DRIVER_MODULE_NAME)\" 35endif 36ifdef WIFI_DRIVER_FW_PATH_STA 37wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_STA=\"$(WIFI_DRIVER_FW_PATH_STA)\" 38endif 39ifdef WIFI_DRIVER_FW_PATH_AP 40wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_AP=\"$(WIFI_DRIVER_FW_PATH_AP)\" 41endif 42ifdef WIFI_DRIVER_FW_PATH_P2P 43wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_P2P=\"$(WIFI_DRIVER_FW_PATH_P2P)\" 44endif 45 46# Some devices use a different path (e.g. devices with broadcom WiFi parts). 47ifdef WIFI_DRIVER_FW_PATH_PARAM 48wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_PARAM=\"$(WIFI_DRIVER_FW_PATH_PARAM)\" 49else 50wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_PARAM=\"/sys/module/wlan/parameters/fwpath\" 51endif 52 53ifdef WIFI_DRIVER_STATE_CTRL_PARAM 54wifi_hal_cflags += -DWIFI_DRIVER_STATE_CTRL_PARAM=\"$(WIFI_DRIVER_STATE_CTRL_PARAM)\" 55endif 56ifdef WIFI_DRIVER_STATE_ON 57wifi_hal_cflags += -DWIFI_DRIVER_STATE_ON=\"$(WIFI_DRIVER_STATE_ON)\" 58endif 59ifdef WIFI_DRIVER_STATE_OFF 60wifi_hal_cflags += -DWIFI_DRIVER_STATE_OFF=\"$(WIFI_DRIVER_STATE_OFF)\" 61endif 62ifeq ($(WIFI_MULTIPLE_VENDOR_HALS), true) 63wifi_hal_cflags += -DWIFI_MULTIPLE_VENDOR_HALS 64endif 65 66# Common code shared between the HALs. 67# ============================================================ 68include $(CLEAR_VARS) 69LOCAL_MODULE := libwifi-hal-common 70LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 71LOCAL_LICENSE_CONDITIONS := notice 72LOCAL_VENDOR_MODULE := true 73LOCAL_CFLAGS := $(wifi_hal_cflags) 74LOCAL_C_INCLUDES := $(LOCAL_PATH)/include 75LOCAL_SHARED_LIBRARIES := libbase 76LOCAL_HEADER_LIBRARIES := libcutils_headers 77LOCAL_SRC_FILES := wifi_hal_common.cpp 78include $(BUILD_STATIC_LIBRARY) 79 80# A fallback "vendor" HAL library. 81# Don't link this, link libwifi-hal. 82# ============================================================ 83include $(CLEAR_VARS) 84LOCAL_MODULE := libwifi-hal-fallback 85LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 86LOCAL_LICENSE_CONDITIONS := notice 87LOCAL_VENDOR_MODULE := true 88LOCAL_CFLAGS := $(wifi_hal_cflags) 89LOCAL_SRC_FILES := wifi_hal_fallback.cpp 90LOCAL_HEADER_LIBRARIES := libhardware_legacy_headers 91include $(BUILD_STATIC_LIBRARY) 92 93# Pick a vendor provided HAL implementation library. 94# ============================================================ 95ifeq ($(WIFI_MULTIPLE_VENDOR_HALS), true) 96 # vendor HALs are loaded dynamically and not linked here 97 LIB_WIFI_HAL := 98else 99 LIB_WIFI_HAL ?= libwifi-hal-fallback 100 VENDOR_LOCAL_SHARED_LIBRARIES := 101 ifeq ($(BOARD_WLAN_DEVICE), bcmdhd) 102 LIB_WIFI_HAL := libwifi-hal-bcm 103 VENDOR_LOCAL_SHARED_LIBRARIES := libcrypto 104ifneq ($(wildcard vendor/google/libraries/GoogleWifiConfigLib),) 105 VENDOR_LOCAL_SHARED_LIBRARIES += \ 106 google_wifi_firmware_config_version_c_wrapper 107endif 108 else ifeq ($(BOARD_WLAN_DEVICE), synadhd) 109 LIB_WIFI_HAL := libwifi-hal-syna 110 VENDOR_LOCAL_SHARED_LIBRARIES := libcrypto 111ifneq ($(wildcard vendor/google/libraries/GoogleWifiConfigLib),) 112 VENDOR_LOCAL_SHARED_LIBRARIES += \ 113 google_wifi_firmware_config_version_c_wrapper 114endif 115 else ifeq ($(BOARD_WLAN_DEVICE), qcwcn) 116 LIB_WIFI_HAL := libwifi-hal-qcom 117 VENDOR_LOCAL_SHARED_LIBRARIES := libcld80211 118 VENDOR_LOCAL_SHARED_LIBRARIES += libcrypto 119 else ifeq ($(BOARD_WLAN_DEVICE), mrvl) 120 # this is commented because none of the nexus devices 121 # that sport Marvell's wifi have support for HAL 122 # LIB_WIFI_HAL := libwifi-hal-mrvl 123 else ifeq ($(BOARD_WLAN_DEVICE), MediaTek) 124 # support MTK WIFI HAL 125 LIB_WIFI_HAL := libwifi-hal-mt66xx 126 else ifeq ($(BOARD_WLAN_DEVICE), realtek) 127 # support Realtek WIFI HAL 128 LIB_WIFI_HAL := libwifi-hal-rtk 129 else ifeq ($(BOARD_WLAN_DEVICE), emulator) 130 LIB_WIFI_HAL := libwifi-hal-emu 131 else ifeq ($(BOARD_WLAN_DEVICE), slsi) 132 LIB_WIFI_HAL := libwifi-hal-slsi 133 endif 134endif 135 136# The WiFi HAL that you should be linking. 137# ============================================================ 138include $(CLEAR_VARS) 139LOCAL_MODULE := libwifi-hal 140LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 141LOCAL_LICENSE_CONDITIONS := notice 142LOCAL_PROPRIETARY_MODULE := true 143LOCAL_CFLAGS := $(wifi_hal_cflags) 144LOCAL_C_INCLUDES := $(LOCAL_PATH)/include 145LOCAL_EXPORT_C_INCLUDE_DIRS := \ 146 $(LOCAL_PATH)/include 147LOCAL_EXPORT_HEADER_LIBRARY_HEADERS := libhardware_legacy_headers 148LOCAL_HEADER_LIBRARIES := libhardware_legacy_headers 149LOCAL_SHARED_LIBRARIES := \ 150 libbase \ 151 libcutils \ 152 liblog \ 153 libnl \ 154 libutils \ 155 $(VENDOR_LOCAL_SHARED_LIBRARIES) 156LOCAL_SRC_FILES := \ 157 driver_tool.cpp \ 158 hal_tool.cpp 159LOCAL_WHOLE_STATIC_LIBRARIES := $(LIB_WIFI_HAL) libwifi-hal-common 160include $(BUILD_SHARED_LIBRARY) 161 162# Test utilities (e.g. mock classes) for libwifi-hal 163# ============================================================ 164include $(CLEAR_VARS) 165LOCAL_MODULE := libwifi-hal-test 166LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 167LOCAL_LICENSE_CONDITIONS := notice 168LOCAL_CFLAGS := $(wifi_hal_cflags) 169LOCAL_C_INCLUDES := \ 170 $(LOCAL_PATH)/include \ 171 $(LOCAL_PATH)/testlib/include 172LOCAL_STATIC_LIBRARIES := libgmock 173LOCAL_EXPORT_C_INCLUDE_DIRS := \ 174 $(LOCAL_PATH)/include \ 175 $(LOCAL_PATH)/testlib/include 176include $(BUILD_STATIC_LIBRARY) 177