# 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.
-# MinGW core makefile v1.2 for Mesa
+# MinGW core makefile v1.4 for Mesa
#
-# Copyright (C) 2002 - Borca Daniel
+# Copyright (C) 2002 - Daniel Borca
# Email : dborca@users.sourceforge.net
# Web : http://www.geocities.com/dborca
# As a consequence, you'll need the Win32 Glide3
# library to build any application.
# default = no
-# HAVE_X86=1 optimize for i386.
+# ICD=1 build the installable client driver interface
+# (windows opengl driver interface)
# 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)
+# X86=1 optimize for x86 (if possible, use MMX, SSE, 3DNow).
# default = no
#
# Targets:
.INTERMEDIATE: x86/gen_matypes.exe
.SUFFIXES: .rc .res
+# Set this to the prefix of your build tools, i.e. mingw32-
+TOOLS_PREFIX = mingw32-
+
TOP = ../..
GLIDE ?= $(TOP)/glide3
LIBDIR = $(TOP)/lib
-GL_DLL = opengl32.dll
-GL_IMP = libopengl32.a
+ifeq ($(ICD),1)
+ GL_DLL = mesa32.dll
+ GL_IMP = libmesa32.a
+else
+ GL_DLL = opengl32.dll
+ GL_IMP = libopengl32.a
+endif
LDLIBS = -lgdi32
-CC = mingw32-gcc
-CFLAGS += -DBUILD_GL32 -D_OPENGL32_ -D_MSC_VER
-CFLAGS += -I$(TOP)/include -I. -Imain -Iglapi
+CC = $(TOOLS_PREFIX)gcc
+CFLAGS += -DBUILD_GL32 -D_OPENGL32_
+CFLAGS += $(INCLUDE_DIRS)
+CFLAGS += -DUSE_EXTERNAL_DXTN_LIB=1
ifeq ($(FX),1)
-CFLAGS += -DH3
-CFLAGS += -I$(GLIDE)/include -DFX
-LDLIBS += -L$(GLIDE)/lib -lglide3x
-GL_DEF = drivers/glide/fxopengl.def
-GL_RES = drivers/glide/fx.rc
+ CFLAGS += -I$(GLIDE)/include -DFX
+ LDLIBS += -L$(GLIDE)/lib -lglide3x
+ GL_DEF = drivers/windows/fx/fxopengl.def
+ GL_RES = drivers/windows/fx/fx.rc
else
-GL_DEF = drivers/windows/gdi/mesa.def
+ ifeq ($(ICD),1)
+ CFLAGS += -DUSE_MGL_NAMESPACE
+ GL_DEF = drivers/windows/icd/mesa.def
+ else
+ GL_DEF = drivers/windows/gdi/mesa.def
+ endif
endif
AR = ar
-ARFLAGS = rus
+ARFLAGS = crus
-ifeq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),)
UNLINK = del $(subst /,\,$(1))
-else
+ifneq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),)
+UNLINK = $(RM) $(1)
+endif
+ifneq ($(wildcard $(addsuffix /rm,$(subst :, ,$(PATH)))),)
UNLINK = $(RM) $(1)
endif
include sources
-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
-
-CORE_SOURCES = \
- $(MAIN_SOURCES) \
- $(GLAPI_SOURCES) \
- $(MATH_SOURCES) \
- $(ARRAY_CACHE_SOURCES) \
- $(TNL_SOURCES) \
- $(SWRAST_SOURCES) \
- $(SWRAST_SETUP_SOURCES)
-
-ifeq ($(HAVE_MMX),1)
-X86_SOURCES += $(MMX_SOURCES)
+ifeq ($(X86),1)
+CFLAGS += -DUSE_X86_ASM
CFLAGS += -DUSE_MMX_ASM
-HAVE_X86 = 1
-endif
-ifeq ($(HAVE_SSE),1)
-X86_SOURCES += $(SSE_SOURCES)
CFLAGS += -DUSE_SSE_ASM
-HAVE_X86 = 1
-endif
-ifeq ($(HAVE_3DNOW),1)
-X86_SOURCES += $(K3D_SOURCES)
CFLAGS += -DUSE_3DNOW_ASM
-HAVE_X86 = 1
-endif
-ifeq ($(HAVE_X86),1)
-CFLAGS += -DUSE_X86_ASM
+X86_SOURCES += $(X86_API)
else
X86_SOURCES =
endif
ifeq ($(FX),1)
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 \
- drivers/glide/fxwgl.c
+ $(GLIDE_DRIVER_SOURCES) \
+ drivers/windows/fx/fxwgl.c
+else
+ifeq ($(ICD),1)
+DRIVER_SOURCES = \
+ drivers/windows/gdi/wmesa.c \
+ drivers/windows/icd/icd.c
else
DRIVER_SOURCES = \
drivers/windows/gdi/wmesa.c \
drivers/windows/gdi/wgl.c
endif
+endif
SOURCES = $(CORE_SOURCES) $(X86_SOURCES) $(COMMON_DRIVER_SOURCES) $(DRIVER_SOURCES)
.rc.res:
windres -o $@ -Irc -Ocoff $<
-all: $(LIBDIR)/$(GL_DLL) $(LIBDIR)/$(GL_IMP)
+all: $(LIBDIR) $(LIBDIR)/$(GL_DLL) $(LIBDIR)/$(GL_IMP)
+
+$(LIBDIR):
+ mkdir -p $(LIBDIR)
$(LIBDIR)/$(GL_DLL) $(LIBDIR)/$(GL_IMP): $(OBJECTS) $(RESOURCE)
- dllwrap -o $(LIBDIR)/$(GL_DLL) --output-lib $(LIBDIR)/$(GL_IMP) --target i386-mingw32 --def $(GL_DEF) $^ $(LDLIBS)
+ $(TOOLS_PREFIX)dllwrap -o $(LIBDIR)/$(GL_DLL) --output-lib $(LIBDIR)/$(GL_IMP) \
+ --target i386-mingw32 --def $(GL_DEF) -Wl,-enable-stdcall-fixup \
+ $^ $(LDLIBS)
$(X86_OBJECTS): x86/matypes.h
x86/gen_matypes.exe: x86/gen_matypes.c
$(CC) -o $@ $(CFLAGS) -s $<
-# [dBorca] Hack alert:
+# [dBorca]
# glapi_x86.S needs some adjustments
# in order to generate correct entrypoints
+# Trick: change the following condition to
+# be always false if you need C entrypoints
+# with USE_X86_ASM (useful for trace/debug)
+ifeq (1,1)
x86/glapi_x86.o: x86/glapi_x86.S
- $(CC) -o $@ $(CFLAGS) -U__WIN32__ -DSTDCALL_API -c $<
-#main/dispatch.o: main/dispatch.c
-# $(CC) -o $@ $(CFLAGS) -UUSE_X86_ASM -c $<
+ $(CC) -o $@ $(CFLAGS) -DSTDCALL_API -c $<
+else
+main/dispatch.o: main/dispatch.c
+ $(CC) -o $@ $(CFLAGS) -UUSE_X86_ASM -c $<
+glapi/glapi.o: glapi/glapi.c
+ $(CC) -o $@ $(CFLAGS) -UUSE_X86_ASM -c $<
+endif
+
+# [dBorca]
+# if we want codegen, we have to stdcall
+tnl/t_vtx_x86_gcc.o: tnl/t_vtx_x86_gcc.S
+ $(CC) -o $@ $(CFLAGS) -DSTDCALL_API -c $<
clean:
-$(call UNLINK,array_cache/*.o)
-$(call UNLINK,glapi/*.o)
-$(call UNLINK,main/*.o)
-$(call UNLINK,math/*.o)
+ -$(call UNLINK,shader/*.o)
+ -$(call UNLINK,sparc/*.o)
+ -$(call UNLINK,ppc/*.o)
-$(call UNLINK,swrast/*.o)
-$(call UNLINK,swrast_setup/*.o)
-$(call UNLINK,tnl/*.o)
-$(call UNLINK,x86/*.o)
-$(call UNLINK,drivers/common/*.o)
- -$(call UNLINK,drivers/windows/gdi/*.o)
-$(call UNLINK,drivers/glide/*.o)
- -$(call UNLINK,drivers/glide/*.res)
+ -$(call UNLINK,drivers/windows/fx/*.o)
+ -$(call UNLINK,drivers/windows/fx/*.res)
+ -$(call UNLINK,drivers/windows/gdi/*.o)
+ -$(call UNLINK,drivers/windows/icd/*.o)