
TARGET_ARCH ?= x86_64
ccflags-y := -Wall -fno-strict-aliasing -Wno-undef -Wno-unused -Wno-missing-braces -Wno-missing-attributes -Wno-overflow  -DZX_PCIE_BUS -DNEW_ZXFB -D__LINUX__
ccflags-y += -O2 -fno-strict-aliasing -DZX_TRACE_EVENT=1

BIN_TYPE ?= $(shell uname -m |sed -e s/i.86/i386/)

ZXGPU_FULL_PATH=$(srctree)/$(src)

ZX_SRC_DIR_O := src

ZX_OBJ_LIST:= \
        os_interface.o  \
        zxg.o \
        zx_cec.o \
        zx_driver.o \
        zx_keymap.o \
        zx_pcie.o \
        os_shared.o \
        zx_debugfs.o \
        zx_sysfs.o \
        zx_ioctl.o \
        zx_led.o \
        zx_gem.o \
        zx_fence.o \
        zxgfx_trace_events.o \
        zx_sync.o \
        zx_atomic.o \
        zx_cbios.o \
        zx_connector.o \
        zx_crtc.o \
        zx_disp.o \
        zx_drmfb.o \
        zx_encoder.o \
        zx_irq.o \
        zx_plane.o \
        zx_fbdev.o \
        zx_backlight.o \
        zx_sink.o \
        zx_i2c.o \
        zx_audio.o

zx-objs := $(addprefix $(ZX_SRC_DIR_O)/,$(ZX_OBJ_LIST))

## for cbios
ccflags-y += -I${ZXGPU_FULL_PATH}/src/cbios \
             -I${ZXGPU_FULL_PATH}/src/cbios/Callback \
             -I${ZXGPU_FULL_PATH}/src/cbios/Device \
             -I${ZXGPU_FULL_PATH}/src/cbios/Device/Port \
             -I${ZXGPU_FULL_PATH}/src/cbios/Device/Monitor \
             -I${ZXGPU_FULL_PATH}/src/cbios/Device/Monitor/DSIPanel \
             -I$(ZXGPU_FULL_PATH)/src/cbios/Device/Monitor/EDPPanel \
             -I${ZXGPU_FULL_PATH}/src/cbios/Display \
             -I${ZXGPU_FULL_PATH}/src/cbios/Init \
             -I${ZXGPU_FULL_PATH}/src/cbios/Util 

ZX_CBIOS_OBJ_LIST := \
        cbios/Interface/CBios.o \
        cbios/Callback/CBiosCallbacks.o \
        cbios/Init/CBiosInit.o      \
        cbios/Util/CBiosUtil.o      \
        cbios/Util/CBiosEDID.o      \
        cbios/Display/CBiosDisplayManager.o \
        cbios/Display/CBiosPathManager.o \
        cbios/Display/CBiosMode.o      \
        cbios/Device/CBiosShare.o \
        cbios/Device/CBiosDeviceShare.o \
        cbios/Device/CBiosDevice.o    \
        cbios/Device/Port/CBiosCRT.o       \
        cbios/Device/Port/CBiosDP.o        \
        cbios/Device/Port/CBiosDSI.o       \
        cbios/Device/Port/CBiosDVO.o       \
        cbios/Device/Monitor/CBiosCRTMonitor.o \
        cbios/Device/Monitor/CBiosDPMonitor.o     \
        cbios/Device/Monitor/CBiosHDMIMonitor.o   \
        cbios/Device/Monitor/CBiosEDPPanel.o \
        cbios/Device/Monitor/EDPPanel/CBiosITN156.o \
        cbios/Device/Monitor/EDPPanel/CBiosEDO156.o \
        cbios/Device/Monitor/DSIPanel/CBiosDSIPanel.o \
        cbios/Device/Monitor/DSIPanel/CBiosHX8392A.o \
        cbios/Device/Monitor/DSIPanel/CBiosNT35595.o \
        cbios/Device/Monitor/DSIPanel/CBiosR63319.o \
        cbios/Device/Monitor/DSIPanel/CBiosR63417.o \
        cbios/Hw/CBiosChipFunc.o  \
        cbios/Hw/HwInit/CBiosInitHw.o       \
        cbios/Hw/HwCallback/CBiosCallbacksHw.o \
        cbios/Hw/HwInterface/CBiosHwInterface.o      \
        cbios/Hw/HwUtil/CBiosI2C.o       \
        cbios/Hw/HwUtil/CBiosUtilHw.o       \
        cbios/Hw/Interrupt/CBiosISR.o       \
        cbios/Hw/HwBlock/CBiosScaler.o    \
        cbios/Hw/HwBlock/CBiosIGA_Timing.o  \
        cbios/Hw/HwBlock/CBiosDIU_HDTV.o  \
        cbios/Hw/HwBlock/CBiosDIU_HDAC.o  \
        cbios/Hw/HwBlock/CBiosDIU_HDCP.o  \
        cbios/Hw/HwBlock/CBiosDIU_HDMI.o \
        cbios/Hw/HwBlock/CBiosDIU_DP.o \
        cbios/Hw/HwBlock/CBiosDIU_CRT.o \
        cbios/Hw/HwBlock/CBiosDIU_DVO.o \
        cbios/Hw/HwBlock/CBiosDIU_CSC.o \
        cbios/Hw/HwBlock/CBiosPHY_DP.o \
        cbios/Hw/Chx001/CBios_chx.o          \
        cbios/Hw/Chx001/CBiosVCP_chx.o

cbios-objs := $(addprefix $(ZX_SRC_DIR_O)/,$(ZX_CBIOS_OBJ_LIST))

ifdef Elite1K_VEPD
    cbios-objs+=Hw/CBiosPWM.o
endif

zx-objs += ${cbios-objs}

ZX_CORE_BINARY_OBJECT :=  built-in_${BIN_TYPE}.o.hex
ZX_CORE_BINARY_OBJECT_O :=  built-in_${BIN_TYPE}.o

quiet_cmd_symlink = SYMLINK $@
 cmd_symlink = ln -sf "$(realpath $<)" $@

targets += $(ZX_CORE_BINARY_OBJECT_O)


zx_core-objs := $(ZX_CORE_BINARY_OBJECT_O)

zx_core-objs += $(ZX_SRC_DIR_O)/core_module.o

obj-$(CONFIG_GPU_ZX_ZXE) := zx.o zx_core.o

KBUILD_CFLAGS += -I$(ZXGPU_FULL_PATH)/src

modules:
	make -C $(LINUXDIR) M=`pwd` modules

ZX_OBJ_DIR := $(ZXGPU_FULL_PATH)/objs/$(TARGET_ARCH)

$(obj)/$(ZX_CORE_BINARY_OBJECT_O): $(ZX_OBJ_DIR)/$(ZX_CORE_BINARY_OBJECT) FORCE
	$(call if_changed,symlink)


