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 15 LOCAL_PATH := $(call my-dir) 16 17 wifi_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 27 ifdef WIFI_DRIVER_MODULE_PATH 28 wifi_hal_cflags += -DWIFI_DRIVER_MODULE_PATH=\"$(WIFI_DRIVER_MODULE_PATH)\" 29 endif 30 ifdef WIFI_DRIVER_MODULE_ARG 31 wifi_hal_cflags += -DWIFI_DRIVER_MODULE_ARG=\"$(WIFI_DRIVER_MODULE_ARG)\" 32 endif 33 ifdef WIFI_DRIVER_MODULE_NAME 34 wifi_hal_cflags += -DWIFI_DRIVER_MODULE_NAME=\"$(WIFI_DRIVER_MODULE_NAME)\" 35 endif 36 ifdef WIFI_DRIVER_FW_PATH_STA 37 wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_STA=\"$(WIFI_DRIVER_FW_PATH_STA)\" 38 endif 39 ifdef WIFI_DRIVER_FW_PATH_AP 40 wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_AP=\"$(WIFI_DRIVER_FW_PATH_AP)\" 41 endif 42 ifdef WIFI_DRIVER_FW_PATH_P2P 43 wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_P2P=\"$(WIFI_DRIVER_FW_PATH_P2P)\" 44 endif 45 46 # Some devices use a different path (e.g. devices with broadcom WiFi parts). 47 ifdef WIFI_DRIVER_FW_PATH_PARAM 48 wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_PARAM=\"$(WIFI_DRIVER_FW_PATH_PARAM)\" 49 else 50 wifi_hal_cflags += -DWIFI_DRIVER_FW_PATH_PARAM=\"/sys/module/wlan/parameters/fwpath\" 51 endif 52 53 ifdef WIFI_DRIVER_STATE_CTRL_PARAM 54 wifi_hal_cflags += -DWIFI_DRIVER_STATE_CTRL_PARAM=\"$(WIFI_DRIVER_STATE_CTRL_PARAM)\" 55 endif 56 ifdef WIFI_DRIVER_STATE_ON 57 wifi_hal_cflags += -DWIFI_DRIVER_STATE_ON=\"$(WIFI_DRIVER_STATE_ON)\" 58 endif 59 ifdef WIFI_DRIVER_STATE_OFF 60 wifi_hal_cflags += -DWIFI_DRIVER_STATE_OFF=\"$(WIFI_DRIVER_STATE_OFF)\" 61 endif 62 63 # Common code shared between the HALs. 64 # ============================================================ 65 include $(CLEAR_VARS) 66 LOCAL_MODULE := libwifi-hal-common 67 LOCAL_VENDOR_MODULE := true 68 LOCAL_CFLAGS := $(wifi_hal_cflags) 69 LOCAL_C_INCLUDES := $(LOCAL_PATH)/include 70 LOCAL_SHARED_LIBRARIES := libbase 71 LOCAL_HEADER_LIBRARIES := libcutils_headers 72 LOCAL_SRC_FILES := wifi_hal_common.cpp 73 include $(BUILD_STATIC_LIBRARY) 74 75 # A fallback "vendor" HAL library. 76 # Don't link this, link libwifi-hal. 77 # ============================================================ 78 include $(CLEAR_VARS) 79 LOCAL_MODULE := libwifi-hal-fallback 80 LOCAL_VENDOR_MODULE := true 81 LOCAL_CFLAGS := $(wifi_hal_cflags) 82 LOCAL_SRC_FILES := wifi_hal_fallback.cpp 83 LOCAL_HEADER_LIBRARIES := libhardware_legacy_headers 84 include $(BUILD_STATIC_LIBRARY) 85 86 # Pick a vendor provided HAL implementation library. 87 # ============================================================ 88 LIB_WIFI_HAL := libwifi-hal-fallback 89 VENDOR_LOCAL_SHARED_LIBRARIES := 90 ifeq ($(BOARD_WLAN_DEVICE), bcmdhd) 91 LIB_WIFI_HAL := libwifi-hal-bcm 92 else ifeq ($(BOARD_WLAN_DEVICE), qcwcn) 93 LIB_WIFI_HAL := libwifi-hal-qcom 94 VENDOR_LOCAL_SHARED_LIBRARIES := libcld80211 95 else ifeq ($(BOARD_WLAN_DEVICE), mrvl) 96 # this is commented because none of the nexus devices 97 # that sport Marvell's wifi have support for HAL 98 # LIB_WIFI_HAL := libwifi-hal-mrvl 99 else ifeq ($(BOARD_WLAN_DEVICE), MediaTek) 100 # support MTK WIFI HAL 101 LIB_WIFI_HAL := libwifi-hal-mt66xx 102 else ifeq ($(BOARD_WLAN_DEVICE), rtl) 103 # support Realtek WIFI HAL 104 LIB_WIFI_HAL := libwifi-hal-rtl 105 else ifeq ($(BOARD_WLAN_DEVICE), emulator) 106 LIB_WIFI_HAL := libwifi-hal-emu 107 endif 108 109 # The WiFi HAL that you should be linking. 110 # ============================================================ 111 include $(CLEAR_VARS) 112 LOCAL_MODULE := libwifi-hal 113 LOCAL_PROPRIETARY_MODULE := true 114 LOCAL_CFLAGS := $(wifi_hal_cflags) 115 LOCAL_C_INCLUDES := $(LOCAL_PATH)/include 116 LOCAL_EXPORT_C_INCLUDE_DIRS := \ 117 $(LOCAL_PATH)/include 118 LOCAL_EXPORT_HEADER_LIBRARY_HEADERS := libhardware_legacy_headers 119 LOCAL_HEADER_LIBRARIES := libhardware_legacy_headers 120 LOCAL_SHARED_LIBRARIES := \ 121 libbase \ 122 libcutils \ 123 liblog \ 124 libnl \ 125 libutils \ 126 $(VENDOR_LOCAL_SHARED_LIBRARIES) 127 LOCAL_SRC_FILES := \ 128 driver_tool.cpp \ 129 hal_tool.cpp 130 LOCAL_WHOLE_STATIC_LIBRARIES := $(LIB_WIFI_HAL) libwifi-hal-common 131 include $(BUILD_SHARED_LIBRARY) 132 133 # Test utilities (e.g. mock classes) for libwifi-hal 134 # ============================================================ 135 include $(CLEAR_VARS) 136 LOCAL_MODULE := libwifi-hal-test 137 LOCAL_CFLAGS := $(wifi_hal_cflags) 138 LOCAL_C_INCLUDES := \ 139 $(LOCAL_PATH)/include \ 140 $(LOCAL_PATH)/testlib/include 141 LOCAL_STATIC_LIBRARIES := libgmock 142 LOCAL_EXPORT_C_INCLUDE_DIRS := \ 143 $(LOCAL_PATH)/include \ 144 $(LOCAL_PATH)/testlib/include 145 include $(BUILD_STATIC_LIBRARY) 146