summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile168
1 files changed, 168 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a323a0d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,168 @@
+#
+# Makefile fragment for Linux 2.6
+# Broadcom 802.11abg Networking Device Driver
+#
+# Copyright (C) 2015, Broadcom Corporation. All Rights Reserved.
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# $Id: Makefile_kbuild_portsrc 580354 2015-08-18 23:42:37Z $
+
+ifneq ($(KERNELRELEASE),)
+
+ LINUXVER_GOODFOR_CFG80211:=$(strip $(shell \
+ if [ "$(VERSION)" -ge "2" -a "$(PATCHLEVEL)" -ge "6" -a "$(SUBLEVEL)" -ge "32" -o "$(VERSION)" -ge "3" ]; then \
+ echo TRUE; \
+ else \
+ echo FALSE; \
+ fi \
+ ))
+
+ LINUXVER_WEXT_ONLY:=$(strip $(shell \
+ if [ "$(VERSION)" -ge "2" -a "$(PATCHLEVEL)" -ge "6" -a "$(SUBLEVEL)" -ge "17" ]; then \
+ echo FALSE; \
+ else \
+ echo TRUE; \
+ fi \
+ ))
+
+ ifneq ($(API),)
+ ifeq ($(API), CFG80211)
+ APICHOICE := FORCE_CFG80211
+ $(info CFG80211 API specified in command line)
+ else
+ ifeq ($(API), WEXT)
+ APICHOICE := FORCE_WEXT
+ $(info Wireless Extension API specified in command line)
+ else
+ $(error Unknown API type)
+ endif
+ endif
+ else
+ ifeq ($(LINUXVER_GOODFOR_CFG80211),TRUE)
+ APICHOICE := PREFER_CFG80211
+ $(info CFG80211 API is prefered for this kernel version)
+ else
+ ifeq ($(LINUXVER_WEXT_ONLY),TRUE)
+ APICHOICE := FORCE_WEXT
+ $(info Wireless Extension is the only possible API for this kernel version)
+ else
+ APICHOICE := PREFER_WEXT
+ $(info Wireless Extension API is prefered for this kernel version)
+ endif
+ endif
+ endif
+
+ ifeq ($(APICHOICE),FORCE_CFG80211)
+ ifneq ($(CONFIG_CFG80211),)
+ APIFINAL := CFG80211
+ else
+ $(error CFG80211 is specified but it is not enabled in kernel)
+ endif
+ endif
+
+ ifeq ($(APICHOICE),FORCE_WEXT)
+ APIFINAL := WEXT
+ endif
+
+ ifeq ($(APICHOICE),PREFER_CFG80211)
+ ifneq ($(CONFIG_CFG80211),)
+ APIFINAL := CFG80211
+ else
+ ifneq ($(CONFIG_WIRELESS_EXT),)
+ APIFINAL := WEXT
+ else
+ $(warning Neither CFG80211 nor Wireless Extension is enabled in kernel)
+ endif
+ endif
+ endif
+
+ ifeq ($(APICHOICE),PREFER_WEXT)
+ ifneq ($(CONFIG_WIRELESS_EXT),)
+ APIFINAL := WEXT
+ else
+ ifneq ($(CONFIG_CFG80211),)
+ APIFINAL := CFG80211
+ else
+ $(warning Neither CFG80211 nor Wireless Extension is enabled in kernel)
+ endif
+ endif
+ endif
+
+endif
+
+#Check GCC version so we can apply -Wno-date-time if supported. GCC >= 4.9
+empty:=
+space:= $(empty) $(empty)
+GCCVERSIONSTRING := $(shell expr `$(CC) -dumpversion`)
+#Create version number without "."
+GCCVERSION := $(shell expr `echo $(GCCVERSIONSTRING)` | cut -f1 -d.)
+GCCVERSION += $(shell expr `echo $(GCCVERSIONSTRING)` | cut -f2 -d.)
+GCCVERSION += $(shell expr `echo $(GCCVERSIONSTRING)` | cut -f3 -d.)
+# Make sure the version number has at least 3 decimals
+GCCVERSION += 00
+# Remove spaces from the version number
+GCCVERSION := $(subst $(space),$(empty),$(GCCVERSION))
+# Crop the version number to 3 decimals.
+GCCVERSION := $(shell expr `echo $(GCCVERSION)` | cut -b1-3)
+GE_49 := $(shell expr `echo $(GCCVERSION)` \>= 490)
+
+EXTRA_CFLAGS :=
+
+ifeq ($(APIFINAL),CFG80211)
+ EXTRA_CFLAGS += -DUSE_CFG80211
+ $(info Using CFG80211 API)
+endif
+
+ifeq ($(APIFINAL),WEXT)
+ EXTRA_CFLAGS += -DUSE_IW
+ $(info Using Wireless Extension API)
+endif
+
+obj-m += wl.o
+
+wl-objs :=
+wl-objs += src/shared/linux_osl.o
+wl-objs += src/wl/sys/wl_linux.o
+wl-objs += src/wl/sys/wl_iw.o
+wl-objs += src/wl/sys/wl_cfg80211_hybrid.o
+
+EXTRA_CFLAGS += -I$(src)/src/include -I$(src)/src/common/include
+EXTRA_CFLAGS += -I$(src)/src/wl/sys -I$(src)/src/wl/phy -I$(src)/src/wl/ppr/include
+EXTRA_CFLAGS += -I$(src)/src/shared/bcmwifi/include
+#EXTRA_CFLAGS += -DBCMDBG_ASSERT -DBCMDBG_ERR
+ifeq "$(GE_49)" "1"
+EXTRA_CFLAGS += -Wno-date-time
+endif
+
+EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped
+
+KBASE ?= /lib/modules/`uname -r`
+KBUILD_DIR ?= $(KBASE)/build
+MDEST_DIR ?= $(KBASE)/kernel/drivers/net/wireless
+
+# Cross compile setup. Tool chain and kernel tree, replace with your own.
+CROSS_TOOLS = /path/to/tools
+CROSS_KBUILD_DIR = /path/to/kernel/tree
+
+all:
+ KBUILD_NOPEDANTIC=1 make -C $(KBUILD_DIR) M=`pwd`
+
+cross:
+ KBUILD_NOPEDANTIC=1 make CROSS_COMPILE=${CROSS_TOOLS} -C $(CROSS_KBUILD_DIR) M=`pwd`
+
+clean:
+ KBUILD_NOPEDANTIC=1 make -C $(KBUILD_DIR) M=`pwd` clean
+
+install:
+ install -D -m 755 wl.ko $(MDEST_DIR)