EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)
EXTRA_CFLAGS += -O1
#EXTRA_CFLAGS += -O3
#EXTRA_CFLAGS += -Wall
#EXTRA_CFLAGS += -Wextra
#EXTRA_CFLAGS += -Werror
#EXTRA_CFLAGS += -pedantic
#EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes

EXTRA_CFLAGS += -ffreestanding
EXTRA_CFLAGS += -nostdinc
EXTRA_CFLAGS += -nostdlib

EXTRA_CFLAGS += -Wno-unused-variable
EXTRA_CFLAGS += -Wno-unused-value
#EXTRA_CFLAGS += -Wno-unused-label
#EXTRA_CFLAGS += -Wno-unused-parameter
EXTRA_CFLAGS += -Wno-unused-function
#EXTRA_CFLAGS += -Wno-unused
#EXTRA_CFLAGS += -Wno-uninitialized

EXTRA_CFLAGS += -I$(src)
GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc )
ifeq ($(GCC_VER_49),1)
EXTRA_CFLAGS += -Wno-date-time	# Fix compile error && warning on gcc 4.9 and later
endif

EXTRA_CFLAGS += -I$(src)/include

EXTRA_LDFLAGS += --strip-debug

########################## WIFI IC ############################
CONFIG_RTL8852A = y
CONFIG_RTL8852B = n
CONFIG_RTL8852BP = n
CONFIG_RTL8852C = n
CONFIG_RTL8852D = n
######################### Interface ###########################
CONFIG_USB_HCI = n
CONFIG_PCI_HCI = y
CONFIG_SDIO_HCI = n
CONFIG_GSPI_HCI = n

########################## WIFI Generation ###########################
CONFIG_HWSIM = n
CONFIG_WIFI_6 = y
CONFIG_FSM = n
CONFIG_POWER_SAVE = y

########################## Features ###########################
CONFIG_MP_INCLUDED = n
CONFIG_PHL_TEST_SUITE = y
USE_TRUE_PHY = y

########################## CUSTOM ###########################
CONFIG_PHL_CUSTOM_FEATURE = n
CONFIG_PHL_CUSTOM_FEATURE_FB = n

########################## Debug ###########################
CONFIG_RTW_DEBUG = y
# default log level is _DRV_INFO_ = 4,
# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
CONFIG_RTW_LOG_LEVEL = 4

export TopDIR ?= $(shell pwd)
########### COMMON  #################################
ifeq ($(CONFIG_GSPI_HCI), y)
HCI_NAME = gspi
endif

ifeq ($(CONFIG_SDIO_HCI), y)
HCI_NAME = sdio
EXTRA_CFLAGS += -DCONFIG_SDIO_HCI
endif

ifeq ($(CONFIG_USB_HCI), y)
HCI_NAME = usb
EXTRA_CFLAGS += -DCONFIG_USB_HCI
endif

ifeq ($(CONFIG_PCI_HCI), y)
HCI_NAME = pci
EXTRA_CFLAGS += -DCONFIG_PCI_HCI
endif

ifeq ($(CONFIG_FSM), y)
EXTRA_CFLAGS += -DCONFIG_FSM
endif

ifeq ($(CONFIG_POWER_SAVE), y)
EXTRA_CFLAGS += -DCONFIG_POWER_SAVE
endif

ifeq ($(CONFIG_HWSIM), y)
	HAL = hal_sim
else
	ifeq ($(CONFIG_WIFI_6), y)
	HAL = hal_g6
	else
	HAL = hal
	endif
endif


########### HAL_RTL8852A #################################
ifeq ($(CONFIG_RTL8852A), y)
IC_NAME := rtl8852a
#ifeq ($(CONFIG_USB_HCI), y)
#MODULE_NAME = 8852au
#endif
#ifeq ($(CONFIG_PCI_HCI), y)
#MODULE_NAME = 8852ae
#endif
#ifeq ($(CONFIG_SDIO_HCI), y)
#MODULE_NAME = 8852as
#endif

MODULE_NAME = phl
endif

########### HAL_RTL8852B #################################
ifeq ($(CONFIG_RTL8852B), y)
IC_NAME := rtl8852b
#ifeq ($(CONFIG_USB_HCI), y)
#MODULE_NAME = 8852bu
#endif
#ifeq ($(CONFIG_PCI_HCI), y)
#MODULE_NAME = 8852be
#endif
#ifeq ($(CONFIG_SDIO_HCI), y)
#MODULE_NAME = 8852bs
#endif

MODULE_NAME = phl
endif

########### HAL_RTL8852BP #################################
ifeq ($(CONFIG_RTL8852BP), y)
IC_NAME := rtl8852bp
#ifeq ($(CONFIG_USB_HCI), y)
#MODULE_NAME = 8852bpu
#endif
#ifeq ($(CONFIG_PCI_HCI), y)
#MODULE_NAME = 8852bpe
#endif
#ifeq ($(CONFIG_SDIO_HCI), y)
#MODULE_NAME = 8852bps
#endif

MODULE_NAME = phl
endif

########### HAL_RTL8852C #################################
ifeq ($(CONFIG_RTL8852C), y)
IC_NAME := rtl8852c
#ifeq ($(CONFIG_USB_HCI), y)
#MODULE_NAME = 8852cu
#endif
#ifeq ($(CONFIG_PCI_HCI), y)
#MODULE_NAME = 8852ce
#endif
#ifeq ($(CONFIG_SDIO_HCI), y)
#MODULE_NAME = 8852cs
#endif

MODULE_NAME = phl
endif

########### HAL_RTL8852D #################################
ifeq ($(CONFIG_RTL8852D), y)
IC_NAME := rtl8852d
#ifeq ($(CONFIG_USB_HCI), y)
#MODULE_NAME = 8852du
#endif
#ifeq ($(CONFIG_PCI_HCI), y)
#MODULE_NAME = 8852de
#endif
#ifeq ($(CONFIG_SDIO_HCI), y)
#MODULE_NAME = 8852ds
#endif

MODULE_NAME = phl
endif

########### END OF PATH  #################################
ifeq ($(CONFIG_MP_INCLUDED), y)
#MODULE_NAME := $(MODULE_NAME)_mp
EXTRA_CFLAGS += -DCONFIG_MP_INCLUDED
endif

ifeq ($(CONFIG_PHL_TEST_SUITE), y)
EXTRA_CFLAGS += -DCONFIG_PHL_TEST_SUITE
endif

ifeq ($(CONFIG_HWSIM), y)
# To use pure sw beacon
EXTRA_CFLAGS += -DCONFIG_SWTIMER_BASED_TXBCN
EXTRA_CFLAGS += -DCONFIG_SUPPORT_MULTI_BCN
endif

ifeq ($(CONFIG_WIFI_6), y)
EXTRA_CFLAGS += -DCONFIG_WIFI_6
endif

ifeq ($(CONFIG_RTW_DEBUG), y)
EXTRA_CFLAGS += -DCONFIG_RTW_DEBUG
endif

ifeq ($(USE_TRUE_PHY), y)
EXTRA_CFLAGS += -DUSE_TRUE_PHY
endif

ifeq ($(CONFIG_PHL_CUSTOM_FEATURE), y)
EXTRA_CFLAGS += -DCONFIG_PHL_CUSTOM_FEATURE
ifeq ($(CONFIG_PHL_CUSTOM_FEATURE_FB), y)
EXTRA_CFLAGS += -DCONFIG_PHL_CUSTOM_FEATURE_FB
endif
endif

########### PLATFORM PATH  #################################
CONFIG_PLATFORM_I386_PC = y

EXTRA_CFLAGS += -I$(src)/platform
#_PLATFORM_FILES := platform/platform_ops.o

ifeq ($(CONFIG_PLATFORM_I386_PC), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN

SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
KVER  := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
STAGINGMODDIR := /lib/modules/$(KVER)/kernel/drivers/staging
endif

USER_MODULE_NAME ?=
ifneq ($(USER_MODULE_NAME),)
MODULE_NAME := $(USER_MODULE_NAME)
endif

ifneq ($(KERNELRELEASE),)
########### COMMON #################################
include $(src)/phl.mk

obj-$(CONFIG_RTL8852AE) := $(MODULE_NAME).o
$(MODULE_NAME)-y = $(OBJS)

else

export CONFIG_RTL8852AE = m

all: modules

modules:
ifneq (,$(wildcard ./gen_git_info.sh))
	./gen_git_info.sh
endif
	$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd)  modules

strip:
	$(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded

install:
	install -p -m 644 $(MODULE_NAME).ko  $(MODDESTDIR)
	/sbin/depmod -a ${KVER}

uninstall:
	rm -f $(MODDESTDIR)/$(MODULE_NAME).ko
	/sbin/depmod -a ${KVER}

.PHONY: modules clean

clean:
	$(MAKE) -C $(KSRC) M=$(shell pwd) clean
	cd $(HAL) ; rm -fr */*/*/*.mod.c */*/*/*.mod */*/*/*.o */*/*/.*.cmd */*/*/*.ko
	cd $(HAL) ; rm -fr */*/*.mod.c */*/*.mod */*/*.o */*/.*.cmd */*/*.ko
	cd $(HAL) ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
	cd $(HAL) ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
	rm -fr Module.symvers ; rm -fr Module.markers ; rm -fr modules.order
	rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~
	rm -fr .tmp_versions
endif

