blob: cabeff103625f5c20020ef2160fa1a9a13ef6293 [file] [log] [blame]
# Mesa 3-D graphics library
# Version: 4.1
#
# Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# DOS/DJGPP core makefile v1.3 for Mesa 5.0
#
# Copyright (C) 2002 - Borca Daniel
# Email : dborca@yahoo.com
# Web : http://www.geocities.com/dborca
#
# Available options:
#
# Environment variables:
# CFLAGS
#
# GLIDE path to Glide3 SDK include files; used with FX.
# default = $(TOP)/include/glide3
# FX=1 build for 3dfx Glide3. Note that this disables
# compilation of most DMesa code and requires fxMesa.
# As a consequence, you'll need the DJGPP Glide3
# library to build any application.
# default = no
# HAVE_X86=1 optimize for i386.
# default = no
# HAVE_MMX=1 allow MMX specializations, provided your assembler
# supports MMX instruction set. However, the true CPU
# capabilities are checked at run-time to avoid crashes.
# default = no
# HAVE_SSE=1 (see HAVE_MMX)
# default = no
# HAVE_3DNOW=1 (see HAVE_MMX)
# default = no
#
# Targets:
# all: build GL
# clean: remove object files
#
.PHONY: all clean
.INTERMEDIATE: X86/gen_matypes.exe
TOP = ..
GLIDE ?= $(TOP)/include/glide3
LIBDIR = $(TOP)/lib
GL_LIB = libgl.a
GL_DXE = gl.dxe
GL_IMP = libigl.a
CC = gcc
CFLAGS += -I$(TOP)/include -I.
ifdef FX
CFLAGS += -D__DOS__ -I$(GLIDE) -DFX -DFX_GLIDE3 -DFXMESA_USE_ARGB
endif
AR = ar
ARFLAGS = rus
ifneq ($(wildcard $(DJDIR)/lib/dxe3.ld),)
DXE3GEN = $(wildcard $(addsuffix /dxe3gen.exe,$(subst ;, ,$(PATH))))
endif
RM = del
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 \
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
X86_SOURCES = \
X86/x86.c \
X86/glapi_x86.S \
X86/common_x86.c \
X86/common_x86_asm.S \
X86/x86_xform2.S \
X86/x86_xform3.S \
X86/x86_xform4.S \
X86/x86_cliptest.S
MMX_SOURCES = \
X86/mmx_blend.S
SSE_SOURCES = \
X86/sse.c \
X86/sse_xform2.S \
X86/sse_xform3.S \
X86/sse_xform4.S \
X86/sse_normal.S
K3D_SOURCES = \
X86/3dnow.c \
X86/3dnow_xform2.S \
X86/3dnow_xform3.S \
X86/3dnow_xform4.S \
X86/3dnow_normal.S
ifdef HAVE_MMX
X86_SOURCES += $(MMX_SOURCES)
CFLAGS += -DUSE_MMX_ASM
HAVE_X86 = 1
endif
ifdef HAVE_SSE
X86_SOURCES += $(SSE_SOURCES)
CFLAGS += -DUSE_SSE_ASM
HAVE_X86 = 1
endif
ifdef HAVE_3DNOW
X86_SOURCES += $(K3D_SOURCES)
CFLAGS += -DUSE_3DNOW_ASM
HAVE_X86 = 1
endif
ifdef HAVE_X86
CFLAGS += -DUSE_X86_ASM
else
X86_SOURCES =
endif
DRIVER_SOURCES = \
DOS/dmesa.c
ifndef FX
DRIVER_SOURCES += \
DOS/video.c \
DOS/virtual.S \
DOS/vesa/vesa.c \
DOS/vesa/blit.S \
DOS/vga/vga.c \
DOS/dpmi.c
else
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
endif
SOURCES = $(CORE_SOURCES) $(X86_SOURCES) $(DRIVER_SOURCES)
OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))
X86_OBJECTS = $(addsuffix .o,$(basename $(X86_SOURCES)))
.c.o:
$(CC) -o $@ $(CFLAGS) -c $<
.S.o:
$(CC) -o $@ $(CFLAGS) -c $<
.s.o:
$(CC) -o $@ $(CFLAGS) -x assembler-with-cpp -c $<
all: $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GL_DXE) $(LIBDIR)/$(GL_IMP)
$(LIBDIR)/$(GL_LIB): $(OBJECTS)
$(AR) $(ARFLAGS) $(LIBDIR)/$(GL_LIB) $(OBJECTS)
$(LIBDIR)/$(GL_DXE) $(LIBDIR)/$(GL_IMP): $(OBJECTS)
ifeq ($(DXE3GEN),)
$(warning Missing DXE3GEN and/or DXE3.LD! You must have DXE3GEN)
$(warning somewhere in PATH, and DXE3.LD in DJGPP/LIB directory.)
else
ifdef FX
-dxe3gen -o $(LIBDIR)/$(GL_DXE) -I $(LIBDIR)/$(GL_IMP) -D "MesaGL/FX DJGPP" -E _gl -E _DMesa -P glid3.dxe -U $(OBJECTS)
else
-dxe3gen -o $(LIBDIR)/$(GL_DXE) -I $(LIBDIR)/$(GL_IMP) -D "MesaGL DJGPP" -E _gl -E _DMesa -U $(OBJECTS)
endif
endif
$(X86_OBJECTS): X86/matypes.h
X86/matypes.h: X86/gen_matypes.exe
$< > $@
X86/gen_matypes.exe: X86/gen_matypes.c
$(CC) -o $@ $(CFLAGS) -s $<
clean:
-$(RM) $(subst /,\,*.o)
-$(RM) $(subst /,\,array_cache/*.o)
-$(RM) $(subst /,\,math/*.o)
-$(RM) $(subst /,\,swrast/*.o)
-$(RM) $(subst /,\,swrast_setup/*.o)
-$(RM) $(subst /,\,tnl/*.o)
-$(RM) $(subst /,\,X86/*.o)
-$(RM) $(subst /,\,DOS/*.o)
-$(RM) $(subst /,\,DOS/vesa/*.o)
-$(RM) $(subst /,\,DOS/vga/*.o)
-$(RM) $(subst /,\,FX/*.o)
-include depend