#define IHaveModules
#include <Server.tmpl>

#undef DEFXVEXT
#undef DEFHaveModuleDescPtr

XCOMM Check the version to see if we need anything special.
#ifdef XF86_VERSION_CURRENT
XCOMM We are using Xfree86

#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(4,3,99,14,0)
DEFLINFB = -DX_USE_LINEARFB
#endif

#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(4,3,99,16,0)
DEFREGIONNULL = -DX_USE_REGION_NULL
#endif

#if BuildXF86DRI
#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(4,3,99,901,0)
X_DRM_H_LOCATION = -I$(XF86OSSRC)/shared/drm/kernel
#else
X_DRM_H_LOCATION = -I$(XF86OSSRC)/linux/drm/kernel
#endif
#endif

#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(4,4,99,2,0)
XCOMM for Imakefile only
#define X_NEED_NEWMODULETARGET 1
#endif

#if XF86_VERSION_CURRENT <= XF86_VERSION_NUMERIC(4,4,99,7,0)
XCOMM drm_hw_lock_t is hidden behind __KERNEL__ here
XCOMM use drmLock instead
DEFXNEEDDRMLOCK = -DX_NEED_DRMLOCK
#else
#undef DEFXNEEDDRMLOCK
#endif

#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(4,4,20,0,0)
DEFXFREE86DGA = -DXFREE86_45_DGA
#endif

#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(4,5,99,21,0)
#if BuildXvExt
DEFXVEXT = -DXvExtension
#endif
#endif

#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(4,5,99,902,0)
DEFHaveModuleDescPtr = -DHaveModuleDescPtr
#endif

#else
XCOMM We are using X.org

DEFLINFB = -DX_USE_LINEARFB
DEFREGIONNULL = -DX_USE_REGION_NULL

#if BuildXF86DRI
XCOMM Since we are unable to properly version, just include the lot.
X_DRM_H_LOCATION = -I$(DRMSRCDIR)/shared -I$(XF86OSSRC)/shared/drm/kernel
#endif

XCOMM Include the Xorg changes concerning dlloader (by Adam Jackson).
XCOMM The current changes are not necessary yet, but I've backported
XCOMM them anyway.
#if MakeDllModules
DEFXAAGETROP = -DX_HAVE_XAAGETROP
#endif

XCOMM We don't need X_NEED_NEWMODULETARGET with X.org
#undef X_NEED_NEWMODULETARGET

XCOMM I2CBusses require the Start function attached from 6.8 and on
#if XORG_VERSION_MINOR > 7
DEFI2CSTART = -DX_NEED_I2CSTART
#else
#undef DEFI2CSTART
#endif

#if XORG_VERSION_MINOR < 7
XCOMM drm_hw_lock_t is hidden behind __KERNEL__ here
XCOMM use drmLock instead
DEFXNEEDDRMLOCK = -DX_NEED_DRMLOCK
#else
#undef DEFXNEEDDRMLOCK
#endif

#endif

#if BuildXvExt
XVSRCS = via_video.c
XVOBJS = via_video.o
#endif

#if BuildXF86DRI
DRISRCS = via_dri.c
DRIOBJS = via_dri.o
DRIINCLUDES = -I$(SERVERSRC)/GL/dri -I$(LIBSRC)/GL/dri \
       $(X_DRM_H_LOCATION) -I$(TOP)/include
DRIDEFINES = $(GLX_DEFINES) -DHAVE_DRI
#endif

SRCS = ../git_version.h \
    via_driver.c \
    via_accel.c \
    via_mode.c \
    via_edid.c \
    via_crtc.c \
    via_cursor.c \
    via_shadow.c \
    via_dga.c \
    via_host.c \
    via_i2c.c \
    via_id.c \
    via_memory.c \
    via_output.c \
    via_crt.c \
    via_panel.c \
    via_vgahw.c \
    via_vt162x.c \
    via_ch7xxx.c \
    via_sii16x.c \
    $(XVSRCS) \
    $(DRISRCS)

OBJS = via_driver.o \
    via_accel.o \
    via_mode.o \
    via_edid.o \
    via_crtc.o \
    via_cursor.o \
    via_shadow.o \
    via_dga.o \
    via_host.o \
    via_i2c.o \
    via_id.o \
    via_memory.o \
    via_output.o \
    via_crt.o \
    via_panel.o \
    via_vgahw.o \
    via_vt162x.o \
    via_ch7xxx.o \
    via_sii16x.o \
    $(XVOBJS) \
    $(DRIOBJS)

#if defined(XF86DriverSDK)
INCLUDES = -I. -I../../include
#else
INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86OSSRC) \
           -I$(SERVERSRC)/mfb -I$(SERVERSRC)/mi \
           -I$(SERVERSRC)/cfb -I$(XF86SRC)/xaa \
           -I$(XF86SRC)/xf1bpp -I$(XF86SRC)/xf4bpp \
           -I$(XF86SRC)/xf24_32bpp -I$(SERVERSRC)/Xext \
           -I$(XF86SRC)/vgahw -I$(XF86SRC)/ramdac \
           -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \
           -I$(XF86SRC)/rac -I$(XF86SRC)/int10 -I$(SERVERSRC)/render \
           -I$(SERVERSRC)/include -I$(XINCLUDESRC) -I$(FONTINCSRC) \
           -I$(EXTINCSRC) -I$(XF86SRC)/shadowfb \
           -I$(SERVERSRC)/fb $(DRIINCLUDES)
#endif

DEFINES = $(DRIDEFINES) $(DEFLINFB) $(DEFREGIONNULL) $(DEFXAAGETROP) \
	$(DEFI2CSTART) $(DEFXNEEDDRMLOCK) $(DEFXFREE86DGA) \
	$(DEFXVEXT) $(DEFHaveModuleDescPtr)

XCOMM make sure we have ../git_version.h installed.
../git_version.h:
	cd .. && \
	make git_version.h

AllTarget(../git_version.h)

#if MakeHasPosixVariableSubstitutions
SubdirLibraryRule($(OBJS))
#endif

NormalAsmObjectRule()

ModuleObjectRule()
#ifdef X_NEED_NEWMODULETARGET
ObjectModuleTarget(via, $(OBJS),drivers)
#else
ObjectModuleTarget(via, $(OBJS))
#endif

#ifdef InstallVideoObjectModule
InstallVideoObjectModule(via,$(MODULEDIR))
#else
InstallObjectModule(via,$(MODULEDIR),drivers)
#endif

DependTarget()

InstallDriverSDKNonExecFile(Imakefile,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_accel.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_ch7xxx.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_ch7xxx.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_crt.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_crtc.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_crtc.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_cursor.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_dga.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_dri.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_dri.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_driver.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_driver.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_drm.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_drmclient.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_edid.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_host.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_i2c.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_id.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_id.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_memory.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_memory.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_mode.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_mode.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_output.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_output.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_panel.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_regs.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_shadow.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_sii16x.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_vgahw.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_vgahw.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_video.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_video.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_videoregs.h,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_vt162x.c,$(DRIVERSDKDIR)/drivers/via)
InstallDriverSDKNonExecFile(via_vt162x.h,$(DRIVERSDKDIR)/drivers/via)

InstallDriverSDKObjectModule(via,$(DRIVERSDKMODULEDIR),drivers)
