XCOMM $PI:$

#include <Threads.tmpl>

#define DoNormalLib NormalLibGlx
#define DoSharedLib SharedLibGlx
#define DoExtraLib SharedLibGlx
#define DoDebugLib DebugLibGlx
#define DoProfileLib ProfileLibGlx

XCOMM SIS_DEFINES = -DSIS_USE_HW_CULL -DSIS_USE_FASTPATH
SIS_DEFINES = -DSIS_USE_HW_CULL

XCOMM DEBUG_DEFINES = -DDEBUG_LOCKING
XCOMM DEBUG_DEFINES = -DSIS_DEBUG
 
#if Malloc0ReturnsNull
ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL
#endif

#if BuildXF86DRI
  DRI_DEFINES = GlxDefines $(SIS_DEFINES)
  DRI_INCLUDES = -I../../../../dri -I../../../../glx \
		-I../../../dri \
      		-I$(TOP)/include -I$(TOP)/include/GL \
    		-I$(XF86OSSRC) -I$(SERVERSRC)/GL/dri \
		-I$(XF86DRIVERSRC)/sis \
		-I../../../include -I../.. -I../../X \
                -I../common/ \
                -I$(XF86OSSRC)/linux/drm/kernel
#endif

MESA_INCLUDES = -I. -I.. -I../../include

LinkSourceFile(xdriP.h, ../../X)

#if 0
 DEBUG_SRC = sis_debug.c
 DEBUG_OBJ = sis_debug.o
 LinkSourceFile(sis_debug.c, ../../../../../../extras/Mesa/src/SIS)
 LinkSourceFile(sis_debug.h, ../../../../../../extras/Mesa/src/SIS)
 DEBUG_DEFINES += -DSIS_DUMP
#endif

#if 0
 STEREO_SRC = sis_stereo.c
 STEREO_OBJ = sis_stereo.o
 LinkSourceFile(sis_stereo.c, ../../../../../../extras/Mesa/src/SIS)
 LinkSourceFile(sis_stereo.h, ../../../../../../extras/Mesa/src/SIS)
 STEREO_DEFINES = -DSIS_STEREO=1
#else
 STEREO_DEFINES = -DSIS_STEREO=0
#endif

     DEFINES = $(ALLOC_DEFINES) $(DRI_DEFINES) $(DEBUG_DEFINES) \
               $(STEREO_DEFINES)
     INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) $(MESA_INCLUDES) $(DRI_INCLUDES) \
		-I./misc \
                -I$(SERVERSRC)/hw/xfree86/drivers/sis

     SISSRCS = sis_render.c sis_mesa.c sis_ctx.c sis_alloc.c \
            sis_fog.c sis_clear.c sis_stencil.c \
            sis_texture.c sis_xwin.c sis_xmesa.c sis_span.c sis_fastpath.c \
            $(DEBUG_SRC) \
            $(STEREO_SRC)

     SISOBJS = sis_render.o sis_mesa.o sis_ctx.o sis_alloc.o \
            sis_fog.o sis_clear.o sis_stencil.o \
            sis_texture.o sis_xwin.o sis_xmesa.o sis_span.o sis_fastpath.o \
            $(DEBUG_OBJ) \
            $(STEREO_OBJ)

      DRISRCS = ../../../dri/dri_mesa.c \
		../../../../dri/dri_tmm.c

      DRIOBJS = ../../../dri/dri_mesa.o \
		../../../../dri/dri_tmm.o

      DRMSRCS = ../../../../dri/drm/xf86drm.c \
		../../../../dri/drm/xf86drmHash.c \
		../../../../dri/drm/xf86drmRandom.c \
		../../../../dri/drm/xf86drmSL.c

      DRMOBJS = ../../../../dri/drm/xf86drm.o \
		../../../../dri/drm/xf86drmHash.o \
		../../../../dri/drm/xf86drmRandom.o \
		../../../../dri/drm/xf86drmSL.o

     MESASRCS = ../../aatriangle.c \
		../../accum.c \
		../../alpha.c \
		../../alphabuf.c \
		../../attrib.c \
		../../bbox.c \
		../../bitmap.c \
		../../blend.c \
		../../buffers.c \
		../../clip.c \
		../../colortab.c \
		../../config.c \
		../../context.c \
		../../copypix.c \
		../../cva.c \
		../../debug_xform.c \
		../../depth.c \
		../../dlist.c \
		../../drawpix.c \
		../../enable.c \
		../../enums.c \
		../../eval.c \
		../../extensions.c \
		../../feedback.c \
		../../fog.c \
		../../get.c \
		../../glapi.c \
		../../glapinoop.c \
		../../glthread.c \
		../../hash.c \
		../../image.c \
		../../imaging.c \
		../../light.c \
		../../lines.c \
		../../logic.c \
		../../masking.c \
		../../matrix.c \
		../../mem.c \
		../../mmath.c \
		../../pb.c \
		../../pipeline.c \
		../../pixel.c \
		../../pixeltex.c \
		../../points.c \
		../../polygon.c \
		../../quads.c \
		../../rastpos.c \
		../../readpix.c \
		../../rect.c \
		../../scissor.c \
		../../shade.c \
		../../span.c \
		../../stages.c \
		../../state.c \
		../../stencil.c \
		../../teximage.c \
		../../texobj.c \
		../../texstate.c \
		../../texture.c \
		../../texutil.c \
		../../translate.c \
		../../triangle.c \
		../../varray.c \
		../../vb.c \
		../../vbcull.c \
		../../vbfill.c \
		../../vbindirect.c \
		../../vbrender.c \
		../../vbxform.c \
		../../vector.c \
		../../vertices.c \
		../../winpos.c \
		../../xform.c \
		../../zoom.c \
		../../X86/common_x86.c

     MESAOBJS = ../../aatriangle.o \
		../../accum.o \
		../../alpha.o \
		../../alphabuf.o \
		../../attrib.o \
		../../bbox.o \
		../../bitmap.o \
		../../blend.o \
		../../buffers.o \
		../../clip.o \
		../../colortab.o \
		../../config.o \
		../../context.o \
		../../copypix.o \
		../../cva.o \
		../../debug_xform.o \
		../../depth.o \
		../../dlist.o \
		../../drawpix.o \
		../../enable.o \
		../../enums.o \
		../../eval.o \
		../../extensions.o \
		../../feedback.o \
		../../fog.o \
		../../get.o \
		../../hash.o \
		../../hint.o \
		../../image.o \
		../../imaging.o \
		../../light.o \
		../../lines.o \
		../../logic.o \
		../../masking.o \
		../../matrix.o \
		../../mem.o \
		../../mmath.o \
		../../pb.o \
		../../pipeline.o \
		../../pixel.o \
		../../pixeltex.o \
		../../points.o \
		../../polygon.o \
		../../quads.o \
		../../rastpos.o \
		../../readpix.o \
		../../rect.o \
		../../scissor.o \
		../../shade.o \
		../../span.o \
		../../stages.o \
		../../state.o \
		../../stencil.o \
		../../teximage.o \
		../../texobj.o \
		../../texstate.o \
		../../texture.o \
		../../texutil.o \
		../../translate.o \
		../../triangle.o \
		../../varray.o \
		../../vb.o \
		../../vbcull.o \
		../../vbfill.o \
		../../vbindirect.o \
		../../vbrender.o \
		../../vbxform.o \
		../../vector.o \
		../../vertices.o \
		../../winpos.o \
		../../xform.o \
		../../zoom.o

#ifdef i386Architecture
     X86_SRCS = ../../X86/x86.c \
		../../X86/x86a.S \
		../../X86/common_x86.c \
		../../X86/common_x86asm.S \
		../../X86/vertex.S

     X86_OBJS = ../../X86/x86.o \
		../../X86/x86a.o \
		../../X86/common_x86.o \
		../../X86/common_x86asm.o \
		../../X86/vertex.o

     MMX_SRCS = ../../X86/mmx_blend.S

     MMX_OBJS = ../../X86/mmx_blend.o

#if MesaUse3DNow
   3DNOW_SRCS = ../../X86/3dnow.c \
		../../X86/3dnow_norm_raw.S \
		../../X86/3dnow_xform_masked1.S \
		../../X86/3dnow_xform_masked2.S \
		../../X86/3dnow_xform_masked3.S \
		../../X86/3dnow_xform_masked4.S \
		../../X86/3dnow_xform_raw1.S \
		../../X86/3dnow_xform_raw2.S \
		../../X86/3dnow_xform_raw3.S \
		../../X86/3dnow_xform_raw4.S \
		../../X86/vertex_3dnow.S

   3DNOW_OBJS = ../../X86/3dnow.o \
		../../X86/3dnow_norm_raw.o \
		../../X86/3dnow_xform_masked1.o \
		../../X86/3dnow_xform_masked2.o \
		../../X86/3dnow_xform_masked3.o \
		../../X86/3dnow_xform_masked4.o \
		../../X86/3dnow_xform_raw1.o \
		../../X86/3dnow_xform_raw2.o \
		../../X86/3dnow_xform_raw3.o \
		../../X86/3dnow_xform_raw4.o \
		../../X86/vertex_3dnow.o
#endif

#endif

      ASMSRCS = $(X86_SRCS) $(MMX_SRCS) $(3DNOW_SRCS)
      ASMOBJS = $(X86_OBJS) $(MMX_OBJS) $(3DNOW_OBJS)

	 SRCS = $(DRISRCS) $(DRMSRCS) $(SISSRCS) $(MESASRCS) $(ASMSRCS)
	 OBJS = $(DRIOBJS) $(DRMOBJS) $(SISOBJS) $(MESAOBJS) $(ASMOBJS)

#if !GlxUseBuiltInDRIDriver || GlxDebugSIS 
#undef DoNormalLib NormalLibGlx
#undef DoExtraLib SharedLibGlx
#undef DoDebugLib DebugLibGlx
#undef DoProfileLib ProfileLibGlx
#endif

#include <Library.tmpl>

LibraryObjectRule()

SubdirLibraryRule($(OBJS))
NormalLintTarget($(SRCS))

#if !GlxUseBuiltInDRIDriver || GlxDebugSIS
# if GlxDebugSIS && GlxUseBuiltInDRIDriver
LIBNAME = libsis_dri.so
# else
LIBNAME = sis_dri.so
# endif
ALL_OBJS = $(OBJS) 
ALL_DEPS = DONE
SharedDepModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS))
InstallDynamicModule($(LIBNAME),$(MODULEDIR)/dri,.)
#endif

DependTarget()
