# File: Makefile
# Copyright (C) 2022, WuQi Technologies. ALL RIGHTS RESERVED.
#

CC=		$(CROSS_COMPILE)gcc
LD=		$(CROSS_COMPILE)ld

YMD=		`date +%Y%m%d%H%M`

#############################################################################
# Configuration Options
#############################################################################

# Debug Option
# DEBUG LEVEL n/1/2:
# n: NO DEBUG
# 1: PRINTM(MSG,...), PRINTM(FATAL,...), PRINTM(WARN,...) and PRINTM(INFO,...)
# 2: All PRINTM()
CONFIG_DEBUG=2

# HCI Device Support
# 0: Not support
# 1: Support
CONFIG_BT_HCI_BLUEZ = 1

# usb bt sco support
# y: support
# n: not support
CONFIG_SCO_SUPPORT ?= n

#############################################################################
# Select Platform Tools
#############################################################################

#mod: get from root make parameter

MODEXT = ko

ifeq ($(CONFIG_64BIT), y)
	EXTRA_CFLAGS += -DMBT_64BIT
endif

KERNELVERSION_X86 := 	$(shell uname -r)
KERNELDIR?=/lib/modules/$(KERNELVERSION_X86)/build


EXTRA_CFLAGS += -I$(M)/../mbtchar_src
EXTRA_CFLAGS += -I$(M)/bt
LD += -S

BINDIR = ../bin

#############################################################################
# Compiler Flags
#############################################################################

ifeq ($(CONFIG_DEBUG),1)
	EXTRA_CFLAGS += -DDEBUG_LEVEL1
endif

ifeq ($(CONFIG_DEBUG),2)
	EXTRA_CFLAGS += -DDEBUG_LEVEL1
	EXTRA_CFLAGS += -DDEBUG_LEVEL2
	#DBG=	-dbg
endif

ifeq ($(CONFIG_BT_HCI_BLUEZ),1)
	EXTRA_CFLAGS += -DCONFIG_BT_HCI_BLUEZ
endif

ifeq ($(CONFIG_SCO_SUPPORT), y)
	EXTRA_CFLAGS += -DCONFIG_SCO_SUPPORT
endif

#############################################################################
# Make Targets
#############################################################################

ifneq ($(KERNELRELEASE),)

BTOBJS = bt/bt_main.o bt/bt_usb.o bt/bt_proc.o bt/mbt_char.o

BTOBJS += bt/bt_dnld.o bt/bt_hci.o

BTOBJS_BMI += bt/bt_bmi.o bt/bt_bmi_dnld.o

obj-m := wq_bt_usb.o
wq_bt_usb-objs := $(BTOBJS) $(BTOBJS_BMI)

# Otherwise we were called directly from the command line; invoke the kernel build system.
else
default:
	$(MAKE) -C $(KERNELDIR) M=$(PWD)/$(mod) modules

	@if [ ! -d $(BINDIR) ]; then \
		mkdir $(BINDIR); \
	fi

	cp -f wq_bt_usb.$(MODEXT) $(BINDIR)/wq_bt_usb$(DBG).$(MODEXT)
endif


###############################################################

export		CC LD EXTRA_CFLAGS KERNELDIR

.PHONY: clean distclean

echo:

build:		echo default

	@if [ ! -d $(BINDIR) ]; then \
		mkdir $(BINDIR); \
	fi

	cp -f wq_bt_usb.$(MODEXT) $(BINDIR)/wq_bt_usb$(DBG).$(MODEXT)

clean:
	-find . -name "*.o" -exec rm {} \;
	-find . -name "*.ko" -exec rm {} \;
	-find . -name ".*.cmd" -exec rm {} \;
	-find . -name "*.mod" -exec rm {} \;
	-find . -name "*.mod.c" -exec rm {} \;
	-find . -name "*.symvers" -exec rm {} \;
	-find . -name "modules.order" -exec rm {} \;
	-find . -name ".*.dwo" -exec rm {} \;
	-find . -name "*dwo" -exec rm {} \;
	-rm -rf .tmp_versions

install: default

distclean:
	-find . -name "*.o" -exec rm {} \;
	-find . -name "*.orig" -exec rm {} \;
	-find . -name "*.swp" -exec rm {} \;
	-find . -name "*.*~" -exec rm {} \;
	-find . -name "*~" -exec rm {} \;
	-find . -name "*.d" -exec rm {} \;
	-find . -name "*.a" -exec rm {} \;
	-find . -name "tags" -exec rm {} \;
	-find . -name ".*" -exec rm -rf 2> /dev/null \;
	-find . -name "*.ko" -exec rm {} \;
	-find . -name ".*.cmd" -exec rm {} \;
	-find . -name "*.mod" -exec rm {} \;
	-find . -name "*.mod.c" -exec rm {} \;
	-find . -name ".*.dwo" -exec rm {} \;
	-find . -name "*dwo" -exec rm {} \;
	-rm -rf .tmp_versions

# End of file;
