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

# Makefile for core library


##### MACROS #####

GL_MAJOR = 1
GL_MINOR = 4
GL_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY)

VPATH = RCS

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



CORE_SOURCES = \
	api_arrayelt.c \
	api_loopback.c \
	api_noop.c \
	api_validate.c \
	accum.c \
	attrib.c \
	blend.c \
	buffers.c \
	clip.c \
	colortab.c \
	context.c \
	convolve.c \
	debug.c \
	depth.c \
	dispatch.c \
	dlist.c \
	drawpix.c \
	enable.c \
	enums.c \
	eval.c \
	extensions.c \
	feedback.c \
	fog.c \
	get.c \
	glapi.c \
	glthread.c \
	hash.c \
	hint.c \
	histogram.c \
	image.c \
	imports.c \
	light.c \
	lines.c \
	matrix.c \
	mmath.c \
	pixel.c \
	points.c \
	polygon.c \
	rastpos.c \
	state.c \
	stencil.c \
	texcompress.c \
	texformat.c \
	teximage.c \
	texobj.c \
	texstate.c \
	texstore.c \
	texutil.c \
	varray.c \
	vpexec.c \
	vpparse.c \
	vpstate.c \
	vtxfmt.c \
	X86/x86.c \
	X86/common_x86.c \
	X86/3dnow.c \
	X86/sse.c \
	math/m_debug_clip.c \
	math/m_debug_norm.c \
	math/m_debug_xform.c \
	math/m_eval.c \
	math/m_matrix.c \
	math/m_translate.c \
	math/m_vector.c \
	math/m_xform.c \
	array_cache/ac_context.c \
	array_cache/ac_import.c \
	swrast/s_aaline.c \
	swrast/s_aatriangle.c \
	swrast/s_accum.c \
	swrast/s_alpha.c \
	swrast/s_alphabuf.c \
	swrast/s_bitmap.c \
	swrast/s_blend.c \
	swrast/s_buffers.c \
	swrast/s_copypix.c \
	swrast/s_context.c \
	swrast/s_depth.c \
	swrast/s_drawpix.c \
	swrast/s_feedback.c \
	swrast/s_fog.c \
	swrast/s_histogram.c \
	swrast/s_imaging.c \
	swrast/s_lines.c \
	swrast/s_logic.c \
	swrast/s_masking.c \
	swrast/s_pixeltex.c \
	swrast/s_points.c \
	swrast/s_readpix.c \
	swrast/s_span.c \
	swrast/s_stencil.c \
	swrast/s_texture.c \
	swrast/s_texstore.c \
	swrast/s_triangle.c \
	swrast/s_zoom.c \
	swrast_setup/ss_context.c \
	swrast_setup/ss_triangle.c \
	swrast_setup/ss_vb.c \
	tnl/t_array_api.c \
	tnl/t_array_import.c \
	tnl/t_context.c \
	tnl/t_eval_api.c \
	tnl/t_imm_alloc.c \
	tnl/t_imm_api.c \
	tnl/t_imm_debug.c \
	tnl/t_imm_dlist.c \
	tnl/t_imm_elt.c \
	tnl/t_imm_eval.c \
	tnl/t_imm_exec.c \
	tnl/t_imm_fixup.c \
	tnl/t_pipeline.c \
	tnl/t_vb_fog.c \
	tnl/t_vb_light.c \
	tnl/t_vb_normals.c \
	tnl/t_vb_points.c \
	tnl/t_vb_program.c \
	tnl/t_vb_render.c \
	tnl/t_vb_texgen.c \
	tnl/t_vb_texmat.c \
	tnl/t_vb_vertex.c


DRIVER_SOURCES = \
	FX/fxapi.c \
	FX/fxdd.c \
	FX/fxddspan.c \
	FX/fxddtex.c \
	FX/fxsetup.c \
	FX/fxtexman.c \
	FX/fxtris.c \
	FX/fxvb.c \
	FX/fxglidew.c \
	X/glxapi.c \
	X/fakeglx.c \
	X/xfonts.c \
	X/xm_api.c \
	X/xm_dd.c \
	X/xm_line.c \
	X/xm_span.c \
	X/xm_tri.c \
	SVGA/svgamesa.c \
	SVGA/svgamesa8.c \
	SVGA/svgamesa15.c \
	SVGA/svgamesa16.c \
	SVGA/svgamesa24.c \
	SVGA/svgamesa32.c


ASM_SOURCES =

ADDITIONAL_OBJ =

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

CORE_OBJECTS = $(CORE_SOURCES:.c=.o)

OSMESA_SOURCES = OSmesa/osmesa.c
OSMESA_OBJECTS = OSmesa/osmesa.o



##### RULES #####

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

.S.o:
	$(CC) -c -I. $(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/common_x86_asm.o: X86/common_x86_asm.S X86/matypes.h
X86/3dnow.o: X86/3dnow.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X86/sse.o: X86/sse.c
	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@
X86/matypes.h: mtypes.h tnl/t_context.h X86/gen_matypes.c
	$(CC) -I. -I$(INCDIR) $(CFLAGS) X86/gen_matypes.c -o X86/gen_matypes
	./X86/gen_matypes > X86/matypes.h
	rm -f X86/gen_matypes X86/*.o

# We have X86/matypes.h depend on X86/matypes.h so that if ASM_SOURCES
# is empty we don't get an invalid Makefile.
$(ASM_SOURCES) X86/matypes.h: X86/matypes.h


##### TARGETS #####

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

clean:
	-rm -f *.o *~ */*.o */*~ *.lo *.la
	-rm -rf .libs

targets: $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(OSMESA_LIB)

# Make the GL library
$(LIBDIR)/$(GL_LIB): $(OBJECTS)
	$(MAKELIB) $(GL_LIB) $(GL_MAJOR) $(GL_MINOR) $(GL_TINY) $(OBJECTS)
	rm -f $(LIBDIR)/$(GL_LIB)*
	mv $(GL_LIB)* $(LIBDIR)


# Make the OSMesa library
$(LIBDIR)/$(OSMESA_LIB): $(OSMESA_OBJECTS)
	if [ ${OSMESA_LIB} ] ; then $(MAKELIB) $(OSMESA_LIB) $(MESA_MAJOR) $(MESA_MINOR) $(GL_TINY) $(OSMESA_OBJECTS) ; fi
	if [ ${OSMESA_LIB} ] ; then rm -f $(LIBDIR)/$(OSMESA_LIB)* ; fi
	if [ ${OSMESA_LIB} ] ; then mv $(OSMESA_LIB)* $(LIBDIR) ; fi

# Make an optional library with _just_ core objects
libmesa:	$(LIBDIR)/$(MESA_LIB)
	if [ ${MESA_LIB} ] ; then $(MAKELIB) $(MESA_LIB) $(MESA_MAJOR) $(MESA_MINOR) $(GL_TINY) $(CORE_OBJECTS) ; fi
	if [ ${MESA_LIB} ] ; then rm -f $(LIBDIR)/$(MESA_LIB)* ; fi
	if [ ${MESA_LIB} ] ; then mv $(MESA_LIB)* $(LIBDIR) ; fi

$(LIBDIR)/$(MESA_LIB):	$(CORE_OBJECTS)

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) $(OSMESA_SOURCES)
	makedepend -fdepend -Y -I../include -DGGI -DSVGA -DFX $(CORE_SOURCES) $(DRIVER_SOURCES) $(OSMESA_SOURCES)

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