current raster color index should be GLfloat
[mesa.git] / src / mesa / Makefile.X11
index 704963d1917d2fd06ee42ece36a6d91648b2bd9f..c1706da558059440a83db537d483ab0651f4b121 100644 (file)
-# $Id: Makefile.X11,v 1.4 1999/09/15 16:31:54 brianp Exp $
-
-# Mesa 3-D graphics library
-# Version:  3.1
-# Copyright (C) 1995-1999  Brian Paul
-
-# Makefile for core library
+# Makefile for core Mesa library
 
 
 ##### MACROS #####
 
+TOP = ../..
+
 GL_MAJOR = 1
-GL_MINOR = 2
-GL_TINY = $(MESA_MAJOR)$(MESA_MINOR)$(MESA_TINY)
+GL_MINOR = 4
+GL_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY)
+
+GL_LIB_NAME = "GL"  # may be overridden in Make-config
+OSMESA_LIB_NAME = "OSMesa"  # may be overridden in Make-config
 
 VPATH = RCS
 
-INCDIR = ../include
-LIBDIR = ../lib
+LIBDIR = $(TOP)/lib
+
+
+### Lists of source files
+
+MAIN_SOURCES = \
+       main/api_arrayelt.c \
+       main/api_loopback.c \
+       main/api_noop.c \
+       main/api_validate.c \
+       main/accum.c \
+       main/arbparse.c \
+       main/arbprogram.c \
+       main/arbfragparse.c \
+       main/arbvertparse.c \
+       main/attrib.c \
+       main/blend.c \
+       main/bufferobj.c \
+       main/buffers.c \
+       main/clip.c \
+       main/colortab.c \
+       main/context.c \
+       main/convolve.c \
+       main/debug.c \
+       main/depth.c \
+       main/dispatch.c \
+       main/dlist.c \
+       main/drawpix.c \
+       main/enable.c \
+       main/enums.c \
+       main/eval.c \
+       main/extensions.c \
+       main/feedback.c \
+       main/fog.c \
+       main/get.c \
+       main/hash.c \
+       main/hint.c \
+       main/histogram.c \
+       main/image.c \
+       main/imports.c \
+       main/light.c \
+       main/lines.c \
+       main/matrix.c \
+       main/nvprogram.c \
+       main/nvfragparse.c \
+       main/nvvertexec.c \
+       main/nvvertparse.c \
+       main/occlude.c \
+       main/pixel.c \
+       main/points.c \
+       main/polygon.c \
+       main/program.c \
+       main/rastpos.c \
+       main/state.c \
+       main/stencil.c \
+       main/texcompress.c \
+       main/texformat.c \
+       main/teximage.c \
+       main/texobj.c \
+       main/texstate.c \
+       main/texstore.c \
+       main/texutil.c \
+       main/varray.c \
+       main/vtxfmt.c
+
+GLAPI_SOURCES = \
+       glapi/glapi.c \
+       glapi/glthread.c
+
+MATH_SOURCES = \
+       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_SOURCES = \
+       array_cache/ac_context.c \
+       array_cache/ac_import.c
+
+SWRAST_SOURCES = \
+       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_imaging.c \
+       swrast/s_lines.c \
+       swrast/s_logic.c \
+       swrast/s_masking.c \
+       swrast/s_nvfragprog.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_SOURCES = \
+       swrast_setup/ss_context.c \
+       swrast_setup/ss_triangle.c \
+       swrast_setup/ss_vb.c
+
+TNL_SOURCES = \
+       tnl/t_array_api.c \
+       tnl/t_array_import.c \
+       tnl/t_context.c \
+       tnl/t_pipeline.c \
+       tnl/t_save_api.c \
+       tnl/t_save_loopback.c \
+       tnl/t_save_playback.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 \
+       tnl/t_vtx_api.c \
+       tnl/t_vtx_eval.c \
+       tnl/t_vtx_exec.c 
+
+
+ASM_C_SOURCES =        \
+       x86/common_x86.c \
+       x86/x86.c \
+       x86/3dnow.c \
+       x86/sse.c \
+       sparc/sparc.c
+
+X86_SOURCES =                  \
+       x86/common_x86_asm.S    \
+       x86/glapi_x86.S         \
+       x86/x86_xform2.S        \
+       x86/x86_xform3.S        \
+       x86/x86_xform4.S        \
+       x86/x86_cliptest.S      \
+       x86/mmx_blend.S         \
+       x86/3dnow_xform1.S      \
+       x86/3dnow_xform2.S      \
+       x86/3dnow_xform3.S      \
+       x86/3dnow_xform4.S      \
+       x86/3dnow_normal.S      \
+       x86/sse_xform1.S        \
+       x86/sse_xform2.S        \
+       x86/sse_xform3.S        \
+       x86/sse_xform4.S        \
+       x86/sse_normal.S
+
+SPARC_SOURCES =                        \
+       sparc/clip.S            \
+       sparc/glapi_sparc.S     \
+       sparc/norm.S            \
+       sparc/xform.S
+
+X11_DRIVER_SOURCES =           \
+       drivers/x11/glxapi.c    \
+       drivers/x11/fakeglx.c   \
+       drivers/x11/xfonts.c    \
+       drivers/x11/xm_api.c    \
+       drivers/x11/xm_dd.c     \
+       drivers/x11/xm_line.c   \
+       drivers/x11/xm_span.c   \
+       drivers/x11/xm_tri.c
+
+OSMESA_DRIVER_SOURCES = \
+       drivers/osmesa/osmesa.c
+
+GLIDE_DRIVER_SOURCES =                 \
+       drivers/glide/fxapi.c           \
+       drivers/glide/fxdd.c            \
+       drivers/glide/fxddspan.c        \
+       drivers/glide/fxddtex.c         \
+       drivers/glide/fxsetup.c         \
+       drivers/glide/fxtexman.c        \
+       drivers/glide/fxtris.c          \
+       drivers/glide/fxvb.c            \
+       drivers/glide/fxglidew.c        \
+       drivers/glide/fxg.c
+
+SVGA_DRIVER_SOURCES =                  \
+       drivers/svga/svgamesa.c         \
+       drivers/svga/svgamesa8.c        \
+       drivers/svga/svgamesa15.c       \
+       drivers/svga/svgamesa16.c       \
+       drivers/svga/svgamesa24.c       \
+       drivers/svga/svgamesa32.c
+
+
+
+### Groups of files
 
 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 \
-       vertices.c \
-       winpos.c \
-       xform.c \
-       zoom.c \
-       X86/x86.c \
-       X86/common_x86.c \
-       X86/3dnow.c
-
+       $(MAIN_SOURCES)         \
+       $(GLAPI_SOURCES)        \
+       $(MATH_SOURCES)         \
+       $(ARRAY_CACHE_SOURCES)  \
+       $(TNL_SOURCES)          \
+       $(SWRAST_SOURCES)       \
+       $(SWRAST_SETUP_SOURCES) \
+       $(ASM_C_SOURCES)
+
+# This will probably get set to $(X86_SOURCES) in Make-config:
+ASM_SOURCES =
+
+ifndef SOLO
+# This should get set in Make-config someday:
 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
+       $(X11_DRIVER_SOURCES) \
+       $(GLIDE_DRIVER_SOURCES) \
+       $(SVGA_DRIVER_SOURCES)
+endif
+
+
+### Object files
+
+CORE_OBJECTS = $(CORE_SOURCES:.c=.o)
+
+DRIVER_OBJECTS = $(DRIVER_SOURCES:.c=.o)
+
+ASM_OBJECTS = $(ASM_SOURCES:.S=.o)
+
+OSMESA_OBJECTS = $(OSMESA_DRIVER_SOURCES:.c=.o)
+
+OBJECTS = \
+       $(CORE_OBJECTS) \
+       $(ASM_OBJECTS) \
+       $(DRIVER_OBJECTS)
+
+
+### 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 -I. -I$(INCDIR) $(CFLAGS) $< -o $@
+       $(CC) -c $(INCLUDE_DIRS) $(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 $@
+       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
+
+
+x86/matypes.h: main/mtypes.h tnl/t_context.h x86/gen_matypes.c
+       $(CC) $(INCLUDE_DIRS) $(CFLAGS) x86/gen_matypes.c -o x86/gen_matypes
+       ./x86/gen_matypes > x86/matypes.h
+       rm -f x86/gen_matypes x86/*.o
+
+x86/common_x86_asm.o: x86/matypes.h
+
 
 
 ##### TARGETS #####
 
-#default:
-#      @echo "Specify a target configuration"
+default:
+       @echo "Specify a target configuration"
 
-clean:
-       -rm *.o *~ */*.o */*~
 
-targets: $(LIBDIR)/$(GL_LIB)
+targets: $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(OSMESA_LIB) $(LIBMESA)
+
 
-# Make the library
+# 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)
+       $(TOP)/bin/mklib -o $(GL_LIB_NAME) -major $(GL_MAJOR) \
+               -minor $(GL_MINOR) -patch $(GL_TINY) -install $(LIBDIR) \
+               $(MKLIB_OPTIONS) $(GL_LIB_DEPS) $(OBJECTS)
 
 
-include ../Make-config
+# Make the OSMesa library
+$(LIBDIR)/$(OSMESA_LIB): $(OSMESA_OBJECTS)
+       if [ ${OSMESA_LIB} ] ; then \
+               $(TOP)/bin/mklib -o $(OSMESA_LIB_NAME) -major $(MESA_MAJOR) \
+                       -minor $(MESA_MINOR) -patch $(GL_TINY) -L$(LIBDIR) \
+                       -l$(GL_LIB_NAME) -install $(LIBDIR) \
+                       $(MKLIB_OPTIONS) $(OSMESA_OBJECTS) ; \
+       fi
 
-include depend
+
+# 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)
+
+mesa.a:        $(CORE_OBJECTS)
+       rm -f $@ && ar rcv $@ $(CORE_OBJECTS) && ranlib $@
 
 
 
-#
-# 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)
+# Run 'make -f Makefile.X11 dep' to update the dependencies if you change
+# what's included by any source file.
+dep: $(CORE_SOURCES) $(DRIVER_SOURCES) $(OSMESA_DRIVER_SOURCES) $(ASM_SOURCES)
+       makedepend -fdepend -Y $(INCLUDE_DIRS) -DGGI -DSVGA -DFX \
+               $(CORE_SOURCES) $(DRIVER_SOURCES) $(OSMESA_DRIVER_SOURCES) \
+               $(ASM_SOURCES)
 
+
+# Emacs tags
 tags:
        etags `find . -name \*.[ch]` `find ../include`
+
+
+# Remove .o and backup files
+clean:
+       -rm -f *.a
+       -rm -f */*.o */*~ */*.o */*~
+       -rm -f drivers/*/*.o drivers/*/*/*.o
+
+
+include $(TOP)/Make-config
+
+include depend