# Mesa 3-D graphics library
# Version:  5.0
# Copyright (C) 1995-2002  Brian Paul

TOP = ../../../../..

default: linux-solo

SHARED_INCLUDES = $(INCLUDE_DIRS) -I. -I../common -Iserver
MINIGLX_INCLUDES = -I$(TOP)/src/glx/mini

ifeq ($(EMBEDDED),true)
TARGET = radeon_es_dri.so
DEFINES += \
              -D_EMBEDDED \
	-D_HAVE_SWRAST=0 \
	-D_HAVE_SWTNL=0 \
	-D_HAVE_SANITY=0 \
	-D_HAVE_CODEGEN=0 \
	-D_HAVE_LIGHTING=0 \
	-D_HAVE_TEXGEN=0 \
	-D_HAVE_USERCLIP=0 \
	-DGLX_DIRECT_RENDERING
else
TARGET = radeon_dri.so
DEFINES += \
	-D_HAVE_SWRAST=1 \
	-D_HAVE_SWTNL=1 \
	-D_HAVE_SANITY=1 \
	-D_HAVE_CODEGEN=1 \
	-D_HAVE_LIGHTING=1 \
	-D_HAVE_TEXGEN=1 \
	-D_HAVE_USERCLIP=1 \
	-DGLX_DIRECT_RENDERING
endif

MESA_MODULES = $(TOP)/src/mesa/mesa.a

MINIGLX_SOURCES = server/radeon_dri.c 

DRIVER_SOURCES = radeon_context.c \
		 radeon_ioctl.c \
		 radeon_lock.c \
		 radeon_screen.c \
		 radeon_state.c \
		 radeon_state_init.c \
		 ../../common/driverfuncs.c \
		 ../common/mm.c \
		 ../common/utils.c \
		 ../common/texmem.c \
		 ../common/vblank.c \
		 ../common/xmlconfig.c

SUBSET_DRIVER_SOURCES = \
		radeon_subset_bitmap.c \
		radeon_subset_readpix.c \
		radeon_subset_select.c \
		radeon_subset_tex.c \
		radeon_subset_vtx.c 

FULL_DRIVER_SOURCES = 	\
		 radeon_tex.c \
		 radeon_texmem.c \
		 radeon_texstate.c \
		 radeon_tcl.c \
		 radeon_swtcl.c \
		 radeon_span.c \
		 radeon_maos.c \
		 radeon_sanity.c \
	  	 radeon_compat.c \
		 radeon_vtxfmt.c \
		 radeon_vtxfmt_c.c \
		 radeon_vtxfmt_sse.c \
		 radeon_vtxfmt_x86.c 


INCLUDES = $(MINIGLX_INCLUDES) \
	   $(SHARED_INCLUDES)


ifeq ($(EMBEDDED),true)
C_SOURCES = $(DRIVER_SOURCES) \
	    $(SUBSET_DRIVER_SOURCES) \
	    $(MINIGLX_SOURCES) 
else
C_SOURCES = $(DRIVER_SOURCES) \
	    $(FULL_DRIVER_SOURCES) \
	    $(MINIGLX_SOURCES) 
endif


ifeq ($(WINDOW_SYSTEM),dri)
WINOBJ=$(MESABUILDDIR)/dri/dri.a
WINLIB=
else
WINOBJ=
WINLIB=-L$(MESA)/src/glx/mini
endif

ASM_SOURCES = 
OBJECTS = $(C_SOURCES:.c=.o) \
	  $(ASM_SOURCES:.S=.o) 

### Include directories

INCLUDE_DIRS = \
	-I$(TOP)/include \
	-I$(TOP)/src/mesa \
	-I$(TOP)/src/mesa/main \
	-I$(TOP)/src/mesa/glapi \
	-I$(TOP)/src/mesa/math \
	-I$(TOP)/src/mesa/transform \
	-I$(TOP)/src/mesa/swrast \
	-I$(TOP)/src/mesa/swrast_setup


##### RULES #####

.c.o:
	$(CC) -c $(SHARED_INCLUDES) $(MINIGLX_INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@

.S.o:
	$(CC) -c $(SHARED_INCLUDES) $(MINIGLX_INCLUDES) $(CFLAGS) $(DEFINES)  $< -o $@


##### TARGETS #####

targets: depend $(TARGET)

$(TARGET):  $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile.solo
	rm -f $@ && gcc -o $@ -shared $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(WINLIB) -lc $(GL_LIB_DEPS)
	rm -f $(TOP)/lib/$(TARGET) && \
	install $(TARGET) $(TOP)/lib/$(TARGET)

$(TOP)/lib/$(TARGET):	$(TARGET)
	rm -f $(TOP)/lib/$(TARGET) && \
	install $(TARGET) $(TOP)/lib/$(TARGET)

# Run 'make -f Makefile.solo dep' to update the dependencies if you change
# what's included by any source file.
depend: $(C_SOURCES) $(ASM_SOURCES)
	makedepend -fdepend -Y $(SHARED_INCLUDES) $(MINIGLX_INCLUDES)\
		$(C_SOURCES) $(ASM_SOURCES)


# Emacs tags
tags:
	etags `find . -name \*.[ch]` `find ../include`


# Remove .o and backup files
clean:
	-rm -f *.o *~ *.o *~ *.so server/*.o


include $(TOP)/Make-config

include depend