• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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