fix MinGW problems (bug 4956)
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 4 Nov 2005 00:52:08 +0000 (00:52 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 4 Nov 2005 00:52:08 +0000 (00:52 +0000)
src/mesa/Makefile.mgw
src/mesa/main/glheader.h
src/mesa/x86/assyntax.h

index 30b32660cbaaa5cc5e40e4287184112af7569532..ebec5c055a87cc757efd3750fc1c8a518fb7051e 100644 (file)
@@ -57,6 +57,9 @@
 .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
@@ -70,7 +73,7 @@ endif
 
 LDLIBS = -lgdi32
 
-CC = mingw32-gcc
+CC = $(TOOLS_PREFIX)gcc
 CFLAGS += -DBUILD_GL32 -D_OPENGL32_
 CFLAGS += $(INCLUDE_DIRS)
 CFLAGS += -DUSE_EXTERNAL_DXTN_LIB=1
@@ -91,9 +94,11 @@ endif
 AR = ar
 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
 
@@ -142,10 +147,15 @@ RESOURCE = $(GL_RES:.rc=.res)
 .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
 
@@ -163,7 +173,7 @@ x86/gen_matypes.exe: x86/gen_matypes.c
 # 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 $<
+       $(CC) -o $@ $(CFLAGS) -DSTDCALL_API -c $<
 else
 main/dispatch.o: main/dispatch.c
        $(CC) -o $@ $(CFLAGS) -UUSE_X86_ASM -c $<
index 4c75585c4d264c1cd3aa45403da276a1247a112f..4e3e3b5d28897245e05f58af58855a14bd9090b3 100644 (file)
@@ -71,7 +71,7 @@
 
 
 /* Get typedefs for uintptr_t and friends */
-#if defined(_WIN32)
+#if defined(_WIN32) && !defined(__MINGW32__)
 #include <BaseTsd.h>
 #if _MSC_VER == 1200
 typedef UINT_PTR uintptr_t;
index 4b7317b08058532a9c537d21840cfa48d584a82f..9bceacebdb6b0975a56782adfe0741f47f9abb0c 100644 (file)
@@ -1736,7 +1736,7 @@ SECTION _DATA public align=16 class=DATA use32 flat
  */
 #if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__)
 #  define HIDDEN(x) .hidden x
-#elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303
+#elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303 && !defined(__MINGW32__)
 #  pragma GCC visibility push(default)
 #  define HIDDEN(x) .hidden x
 #else