# $Id: Makefile.X11,v 1.1 1999/08/19 00:55:41 jtg Exp $

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

# Makefile for core library


##### MACROS #####

VPATH = RCS

INCDIR = ../include
LIBDIR = ../lib

CORE_SOURCES = \
	accum.c \
	alpha.c \
	alphabuf.c \
	api1.c \
	api2.c \
	apiext.c \
	attrib.c \
	bbox.c \
	bitmap.c \
	blend.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 \
	hash.c \
	image.c \
	light.c \
	lines.c \
	logic.c \
	masking.c \
	matrix.c \
	misc.c \
	mmath.c \
	mthreads.c \
	pb.c \
	pixel.c \
	pipeline.c \
	points.c \
	pointers.c \
	polygon.c \
	quads.c \
	rastpos.c \
	readpix.c \
	rect.c \
	scissor.c \
	shade.c \
	span.c \
	stages.c \
	stencil.c \
	teximage.c \
	texobj.c \
	texstate.c \
	texture.c \
	translate.c \
	triangle.c \
	varray.c \
	vb.c \
	vbcull.c \
	vbfill.c \
	vbindirect.c \
	vbrender.c \
	vbxform.c \
	vector.c \
	winpos.c \
	xform.c \
	zoom.c \
	X86/x86.c \
	X86/common_x86.c \
	X86/3dnow.c

DRIVER_SOURCES = \
	X/glxapi.c \
	X/fakeglx.c \
	X/realglx.c \
	X/xfonts.c \
	X/xmesa1.c \
	X/xmesa2.c \
	X/xmesa3.c \
	X/xmesa4.c \
	OSmesa/osmesa.c \
	SVGA/svgamesa.c \
	FX/fxapi.c \
	FX/fxclip.c \
	FX/fxcva.c \
	FX/fxdd.c \
	FX/fxddspan.c \
	FX/fxddtex.c \
	FX/fxfastpath.c \
	FX/fxpipeline.c \
	FX/fxrender.c \
	FX/fxsanity.c \
	FX/fxsetup.c \
	FX/fxtexman.c \
	FX/fxtrifuncs.c \
	FX/fxvsetup.c \
	FX/fxglidew.c 
#	GGI/ggimesa.c

ASM_SOURCES = 

ADDITIONAL_OBJ = 

OBJECTS = $(ASM_SOURCES:.S=.o) \
	$(CORE_SOURCES:.c=.o) \
	$(DRIVER_SOURCES:.c=.o) \
	$(ADDITIONAL_OBJ)


#who put these here!?!
#GL_LIB = libMesaGL.so
#GLU_LIB = libMesaGLU.so
#GLUT_LIB = libglut.so
#CC = gcc
#INCLUDES=-I. -I../include -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include


##### RULES #####

.c.o:
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@

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


# UGH! These rules shouldn't be needed but IRIX's make (and others?) needs them
X/glxapi.o: X/glxapi.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X/fakeglx.o: X/fakeglx.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X/realglx.o: X/realglx.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X/xfonts.o: X/xfonts.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X/xmesa1.o: X/xmesa1.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X/xmesa2.o: X/xmesa2.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X/xmesa3.o: X/xmesa3.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X/xmesa4.o: X/xmesa4.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
SVGA/svgamesa.o: SVGA/svgamesa.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
OSmesa/osmesa.o: OSmesa/osmesa.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxapi.o: FX/fxapi.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxclip.o: FX/fxclip.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxcva.o: FX/fxcva.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxdd.o: FX/fxdd.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxddspan.o: FX/fxddspan.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxddtex.o: FX/fxddtex.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxfastpath.o: FX/fxfastpath.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxpipeline.o: FX/fxpipeline.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxrender.o: FX/fxrender.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxsanity.o: FX/fxsanity.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxsetup.o: FX/fxsetup.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxtrifuncs.o: FX/fxtrifuncs.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxtexman.o: FX/fxtexman.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxvsetup.o: FX/fxvsetup.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/fxglidew.o: FX/fxglidew.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
FX/X86/fx_3dnow_fastpath.o: FX/X86/fx_3dnow_fastpath.S FX/X86/fx_regoff.h
FX/X86/fx_regoff.h: FX/X86/fx_gen_regoff
	$< > $@
FX/X86/fx_gen_regoff : FX/X86/fx_gen_regoff.c
	$(CC) -I. -I$(INCDIR) $(CFLAGS) $< -o $@
GGI/ggimesa.o: GGI/ggimesa.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X86/x86.o: X86/x86.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X86/common_x86.o: X86/common_x86.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X86/3dnow.o: X86/3dnow.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@


##### TARGETS #####

#default:
#	@echo "Specify a target configuration"

clean:
	-rm *.o *~ */*.o */*~

targets: $(LIBDIR)/$(GL_LIB)

# Make the library
$(LIBDIR)/$(GL_LIB): $(OBJECTS)
	$(MAKELIB) $(GL_LIB) $(MAJOR) $(MINOR) $(OBJECTS)
	rm -f $(LIBDIR)/$(GL_LIB)*
	mv $(GL_LIB)* $(LIBDIR)


include ../Make-config

include depend



#
# Run 'make dep' to update the dependencies if you change what's included
# by any source file.
# 
dep: $(CORE_SOURCES) $(DRIVER_SOURCES)
	makedepend -fdepend -Y -I../include -DGGI -DSVGA -DFX $(CORE_SOURCES) $(DRIVER_SOURCES)

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