wlan: Support both Proprietary and Open Source driver

The prima WLAN driver has historicially been built as a Proprietary
DLKM, but we want support building it as an Open Source DLKM as well.
Update the makefiles so that the same makefiles can be used by both
the Proprietary and the Open Source drivers.

Change-Id: Ib2ccfffd9f539d30c6394e2ca43a17049de28645
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..a977090
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,90 @@
+# Android makefile for the WLAN WCNSS/Prima Module
+
+# Build/Package only in case of 8960 target
+
+LOCAL_PATH := $(call my-dir)
+
+# This makefile is only for DLKM
+ifneq ($(findstring vendor,$(LOCAL_PATH)),)
+
+# Determine if we are Proprietary or Open Source
+ifneq ($(findstring opensource,$(LOCAL_PATH)),)
+    WLAN_PROPRIETARY := 0
+else
+    WLAN_PROPRIETARY := 1
+endif
+
+ifeq ($(WLAN_PROPRIETARY),1)
+    WLAN_BLD_DIR := vendor/qcom/proprietary/wlan
+else
+    WLAN_BLD_DIR := vendor/qcom/opensource/wlan
+endif
+
+ifeq ($(call is-android-codename,JELLY_BEAN),true)
+       DLKM_DIR := $(TOP)/device/qcom/common/dlkm
+else
+       DLKM_DIR := build/dlkm
+endif
+
+ifeq ($(WLAN_PROPRIETARY),1)
+# For the proprietary driver the firmware files are handled here
+include $(CLEAR_VARS)
+LOCAL_MODULE       := WCNSS_qcom_wlan_nv.bin
+LOCAL_MODULE_TAGS  := optional
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH  := $(PRODUCT_OUT)/persist
+LOCAL_SRC_FILES    := firmware_bin/$(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE       := WCNSS_cfg.dat
+LOCAL_MODULE_TAGS  := optional
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH  := $(TARGET_OUT_ETC)/firmware/wlan/prima
+LOCAL_SRC_FILES    := firmware_bin/$(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE       := WCNSS_qcom_cfg.ini
+LOCAL_MODULE_TAGS  := optional
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH  := $(PRODUCT_OUT)/persist
+LOCAL_SRC_FILES    := firmware_bin/$(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+
+endif
+
+# Build prima_wlan.ko
+###########################################################
+
+# This is set once per LOCAL_PATH, not per (kernel) module
+KBUILD_OPTIONS := WLAN_PRIMA=../$(WLAN_BLD_DIR)/prima
+# We are actually building wlan.ko here, as per the
+# requirement we are specifying prima_wlan.ko as LOCAL_MODULE.
+# This means we need to rename the module to prima_wlan.ko
+# after wlan.ko is built.
+KBUILD_OPTIONS += MODNAME=wlan
+KBUILD_OPTIONS += BOARD_PLATFORM=$(TARGET_BOARD_PLATFORM)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE              := prima_wlan.ko
+LOCAL_MODULE_KBUILD_NAME  := wlan.ko
+LOCAL_MODULE_TAGS         := debug
+LOCAL_MODULE_DEBUG_ENABLE := true
+LOCAL_MODULE_PATH         := $(TARGET_OUT)/lib/modules/prima
+include $(DLKM_DIR)/AndroidKernelModule.mk
+###########################################################
+
+#Create symbolic link
+$(shell mkdir -p $(TARGET_OUT)/lib/modules; \
+        ln -sf /system/lib/modules/prima/prima_wlan.ko \
+               $(TARGET_OUT)/lib/modules/wlan.ko)
+
+ifeq ($(WLAN_PROPRIETARY),1)
+$(shell mkdir -p $(TARGET_OUT_ETC)/firmware/wlan/prima; \
+        ln -sf /persist/WCNSS_qcom_wlan_nv.bin \
+        $(TARGET_OUT_ETC)/firmware/wlan/prima/WCNSS_qcom_wlan_nv.bin; \
+        ln -sf /data/misc/wifi/WCNSS_qcom_cfg.ini \
+        $(TARGET_OUT_ETC)/firmware/wlan/prima/WCNSS_qcom_cfg.ini)
+endif
+endif