##############################################################################
#
#    Copyright (c) 2016 - 2022 by LJW.  All rights reserved.
#
#    The material in this file is confidential and contains trade secrets
#    of LJW. This is proprietary information owned by LJW. No
#    part of this work may be disclosed, reproduced, copied, transmitted,
#    or used in any way for any purpose, without the express written
#    permission of LJW.
#
##############################################################################

# LINEAR_GART=1 means linear gart system for x86 and old 32bit bus fpga 
EXTRA_CFLAGS += -DLINEAR_GART=0

# NOEDID mode, force HDMI on and add noedid modes, regardless of the state of HPD
EXTRA_CFLAGS += -DNOEDID=0

# enable/disable SDT config if NOEDID==0, force hardware mirror mode for all HDMIs
EXTRA_CFLAGS += -DUSE_IN_SDT=0

# enable/disable kms vblank
EXTRA_CFLAGS += -DUSE_KMS_VBLANK=1

# enable/disable DAC connector
EXTRA_CFLAGS += -DUSE_DAC_CONNECTOR=1

# enable/disable HDMI connector
EXTRA_CFLAGS += -DUSE_HDMI_CONNECTOR=1

# check the kernel version and set USE_DP when USE_DP is empty
ifeq ($(USE_DP),)
		KVER = $(KERNELVERSION)
		KMAJ = $(shell echo $(KVER) | sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/')
		KMIN = $(shell echo $(KVER) | sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/')
		KREV = $(shell echo $(KVER) | sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/')
		kver_gt = $(shell echo test | awk '{if($(KMAJ) < $(1)) {print 0} else { \
			if($(KMAJ) > $(1)) {print 1} else { \
			if($(KMIN) < $(2)) {print 0} else { \
			if($(KMIN) > $(2)) {print 1} else { \
			if($(KREV) <= $(3)) {print 0} else { print 1 } \
			}}}}}' \
		)
		# Enable DP port if KERNEL VERSION > 4.4.131, otherwise disable DP port
		ifeq ($(call kver_gt,4,4,131),1)
			USE_DP = 1
		else
			USE_DP = 0
		endif
endif

# enable/disable audio globally, 1: enable audio, 0: disable audio
ifeq ($(ENABLE_AUDIO),)
	KVER = $(KERNELVERSION)
	KMAJ = $(shell echo $(KVER) | sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/')
	KMIN = $(shell echo $(KVER) | sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/')
	KREV = $(shell echo $(KVER) | sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/')
	kver_gt = $(shell echo test | awk '{if($(KMAJ) < $(1)) {print 0} else { \
		if($(KMAJ) > $(1)) {print 1} else { \
		if($(KMIN) < $(2)) {print 0} else { \
		if($(KMIN) > $(2)) {print 1} else { \
		if($(KREV) <= $(3)) {print 0} else { print 1 } \
		}}}}}' \
	)
	# Disable AUDIO port if KERNEL VERSION > 6.0, otherwise enable AUDIO port
	ifeq ($(call kver_gt,6,0,000),1)
		ENABLE_AUDIO = 0
	else ifeq ("$(ARCH_TYPE)", "sw_64")
		ENABLE_AUDIO = 0
	else
		ENABLE_AUDIO = 1
	endif
endif

ifeq ($(ENABLE_AUDIO), 1)
# enable/disable audio
	EXTRA_CFLAGS += -DljdENABLE_AUDIO

	# enable/disable HDMI audio, 1: enable hdmi audio interface, 0: disable hdmi audio interface
	EXTRA_CFLAGS += -DENABLE_HDMI_AUDIO=1

	ifeq ($(USE_DP), 1)
		# enable/disable DP audio, 1: enable dp audio interface, 0: disable hdmi audio interface
		EXTRA_CFLAGS += -DENABLE_DP_AUDIO=1
	else
		EXTRA_CFLAGS += -DENABLE_DP_AUDIO=0
	endif
else
	EXTRA_CFLAGS += -DENABLE_HDMI_AUDIO=0
	EXTRA_CFLAGS += -DENABLE_DP_AUDIO=0
endif

# enable/disable VIRTUAL RESOLUTION
ENABLE_VIRT_RESOLUTION=0
ifeq ($(ENABLE_VIRT_RESOLUTION), 1)
XDRV_CFLAGS += -DUSE_VIRT_RESOLUTION
endif

# enable/disable DP connector
ifeq ($(USE_DP), 1)
EXTRA_CFLAGS += -DUSE_DP_CONNECTOR=1
else
EXTRA_CFLAGS += -DUSE_DP_CONNECTOR=0
endif

# enable/disable break functions if _DEBUG has been defined
EXTRA_CFLAGS += -DUSE_DEBUG_BREAK=1

# enable/disable nodeobject for scanout to be preallocated
EXTRA_CFLAGS += -DUSE_SCANOUT_PREALLOCATE=0

# enable/disable to register clock
EXTRA_CFLAGS += -DUSE_CLOCK_REGISTER=0

# auto adjust frequency test
#EXTRA_CFLAGS += -DTEST_AUTO_ADJUST_FREQ
EXTRA_CFLAGS += -DLINUX -DDRIVER -DDBG=0
EXTRA_CFLAGS += -DUSE_PLATFORM_DRIVER=1
EXTRA_CFLAGS += -DLJMICRO_PROFILER=1
EXTRA_CFLAGS += -DLJMICRO_PROFILER_CONTEXT=1
EXTRA_CFLAGS += -DENABLE_GPU_CLOCK_BY_DRIVER=1
EXTRA_CFLAGS += -DUSE_NEW_LINUX_SIGNAL=0
EXTRA_CFLAGS += -DljdCACHE_FUNCTION_UNIMPLEMENTED=0
EXTRA_CFLAGS += -DljdENABLE_3D=1
EXTRA_CFLAGS += -DljdENABLE_2D=1
EXTRA_CFLAGS += -DljdENABLE_VG=0
EXTRA_CFLAGS += -DljdENABLE_VPU=1
EXTRA_CFLAGS += -DljdENABLE_VPUENC=0
EXTRA_CFLAGS += -DljdFPGA_BUILD=0
EXTRA_CFLAGS += -DljdENABLE_DRM=1
EXTRA_CFLAGS += -DLJMICRO_ENABLE_DRM=1
EXTRA_CFLAGS += -DljdENABLE_TRUST_APPLICATION=1

EXTRA_CFLAGS += -DUSE_LINUX_PCIE=1
EXTRA_CFLAGS += -DljdIRQ_SHARED

ifeq ($(CONFIG_ARM64),y)
  EXTRA_CFLAGS += -Iarch/arm/mm
  LJMCORE_OBJ_DIR := objs/aarch64
endif
ifeq ($(CONFIG_LOONGARCH),y)
  LJMCORE_OBJ_DIR := objs/loongarch64
endif
ifeq ($(CONFIG_X86),y)
  LJMCORE_OBJ_DIR := objs/x86_64
endif
ifeq ($(CONFIG_SW64),y)
  LJMCORE_OBJ_DIR := objs/sw_64
endif

ifneq ($(CONFIG_SYNC),)
#EXTRA_CFLAGS += -DljdLINUX_SYNC_FILE=1
else
  ifneq ($(CONFIG_SYNC_FILE),)
    EXTRA_CFLAGS += -DljdLINUX_SYNC_FILE=1
  endif
endif

#EXTRA_CFLAGS += -DNEW_VIDMEM_MANAGE
EXTRA_CFLAGS += -DPCIE_EN
EXTRA_CFLAGS += -DHANTROAXIFE_SUPPORT

HOST := $(shell hostname)
EXTRA_CFLAGS += -DHOST=\"$(HOST)\"

ccflags-y := -I$(srctree)/$(src)/src $(EXTRA_CFLAGS)

#将.o.hex文件转换为.o文件
quiet_cmd_xxd = XXD     $@
      cmd_xxd = xxd -r $< $@

%.o: %.o.hex
	$(call cmd,xxd)

OBJS := $(patsubst %.hex,%,$(wildcard $(srctree)/$(src)/$(LJMCORE_OBJ_DIR)/*.o.hex))
OBJS += $(patsubst %.c,%.o,$(wildcard $(srctree)/$(src)/src/*.c))
OBJS := $(patsubst $(srctree)/$(src)/%,%,$(OBJS))

ljmcore-objs = $(OBJS)

obj-$(CONFIG_GPU_709_LJMCORE) += ljmcore.o
