more Mingw32 fixes
authorZhang <zxpmyth@yahoo.com.cn>
Fri, 27 Jul 2007 17:19:35 +0000 (11:19 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Fri, 27 Jul 2007 17:19:35 +0000 (11:19 -0600)
docs/README.MINGW32
include/GL/gl.h
include/GL/glut.h
include/GL/mesa_wgl.h
progs/samples/Makefile.mgw
src/glu/sgi/Makefile.mgw
src/glut/glx/Makefile.mgw
src/mesa/Makefile.mgw

index 138dd43eaccfe0d3b3ddc6f308ae800f0ee3624d..9477b2bd3182ccd12175845f75d508e8b314b64e 100644 (file)
@@ -91,9 +91,11 @@ Running the Build:
 
 
 
-*******************This section is added by Heromyth*****************************
-Updated on 2007-7-21, by Heromyth <zxpmyth@yahoo.com.cn>
+******This section is added by Heromyth <zxpmyth@yahoo.com.cn>*************
 
+====================
+Updated on 2007-7-21
+====================
 
 Notice:
        1) The generated DLLs are *not* compatible with the ones built
@@ -115,7 +117,7 @@ For example, run:
 , and delete all the lines where all the wgl*() functions are. Because they would 
 be conflicted with the ones in <Mesa3D-root>\include\GL\mesa_wgl.h.
 
-======= Conflicted Functions List ======
+>>>>>>>>>> Conflicted Functions List >>>>>>>>>>
 WINGDIAPI BOOL WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
 WINGDIAPI HGLRC WINAPI wglCreateContext(HDC);
 WINGDIAPI HGLRC WINAPI wglCreateLayerContext(HDC,int);
@@ -134,6 +136,18 @@ WINGDIAPI BOOL WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
 WINGDIAPI BOOL WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
 WINGDIAPI BOOL WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
 WINGDIAPI BOOL WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
-===================
+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+====================
+Updated on 2007-7-22
+====================
+       I havn't thought that I would find a better way to solve my problems so soon. 
+I changed the method in which the import-libs and DLLs are made. After this update,
+the DLLs of MESA are more optimized and more compatible. 
+       It seems that there is no need to keep the building way of 'NO-STDCALL'.The 
+way of USING_STDCALL is so nice! The file <Mesa3D-root>\configs\config.mgw is 
+also not needed, and can be deleted safely!
+       
+
 
 *********************************************************************************
\ No newline at end of file
index 09195aa136108ca1859a3aa3e30ab26af64127bf..3891a71875117cedec4dc52be39bf635263657c3 100644 (file)
 #  else /* for use with static link lib build of Win32 edition only */
 #    define GLAPI extern
 #  endif /* _STATIC_MESA support */
-#  if defined(__MINGW32__) && defined(GL_NO_STDCALL)  /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */
-#    define GLAPIENTRY 
-#  else
-#    define GLAPIENTRY __stdcall
-#  endif
+#  define GLAPIENTRY __stdcall
 #elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
 #  define GLAPI extern
 #  define GLAPIENTRY __stdcall
index e286349f9b01c3903b4f9104c9aaf36ba1531661..137b8efa13aa2a6dfc285dcca1ea0ff020a66c8d 100644 (file)
@@ -112,7 +112,7 @@ extern _CRTIMP void __cdecl exit(int);
    and redifinition of Windows system defs, also removes requirement of
    pretty much any standard windows header from this file */
 
-#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__)
+#if (_MSC_VER >= 800) || defined(__MINGW32__) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__)
 #      define GLUTAPIENTRY __stdcall
 #else
 #      define GLUTAPIENTRY
index 1d774571d94db40dfb08160961a83df01a9d5795..57147232b7f599b762e0e84b76b946121ff73513 100644 (file)
@@ -81,8 +81,6 @@ WGLAPI int   GLAPIENTRY wglChoosePixelFormat(HDC, const PIXELFORMATDESCRIPTOR *)
 WGLAPI int   GLAPIENTRY wglDescribePixelFormat(HDC,int, unsigned int, LPPIXELFORMATDESCRIPTOR);
 WGLAPI int   GLAPIENTRY wglGetPixelFormat(HDC hdc);
 
-
-#if defined(GL_NO_STDCALL) || !defined(__MINGW32__)
 WGLAPI int   GLAPIENTRY wglCopyContext(HGLRC, HGLRC, unsigned int);
 WGLAPI HGLRC GLAPIENTRY wglCreateContext(HDC);
 WGLAPI HGLRC GLAPIENTRY wglCreateLayerContext(HDC,int);
@@ -101,7 +99,6 @@ WGLAPI int   GLAPIENTRY wglUseFontBitmapsA(HDC, unsigned long, unsigned long, un
 WGLAPI int   GLAPIENTRY wglUseFontBitmapsW(HDC, unsigned long, unsigned long, unsigned long);
 WGLAPI int   GLAPIENTRY wglUseFontOutlinesA(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT);
 WGLAPI int   GLAPIENTRY wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT);
-#endif
 
 #ifndef __MINGW32__
 WGLAPI int   GLAPIENTRY SwapBuffers(HDC);
index 3b2fd785def74956a484574461fe66b6ffaf1fa2..8bb975be9da0affd08ed386fdb09657a0768f49c 100644 (file)
 
 TOP = ../..
 
-include $(TOP)/configs/config.mgw
-ALL_USING_STDCALL ?= 1
-GL_USING_STDCALL ?= 1
-GLUT_USING_STDCALL ?= 1
-
 CC = mingw32-gcc
 CFLAGS = -Wall -pedantic
-CFLAGS += -O2 -ffast-math
+CFLAGS += -O2 -ffast-math -D_DLL
 CFLAGS += -I$(TOP)/include -I../util
 ifeq ($(FX),1)
   CFLAGS += -DFX
@@ -68,17 +63,6 @@ endif
 
 CFLAGS += -DGLUT_DISABLE_ATEXIT_HACK
 
-ifeq ($(GL_USING_STDCALL),0)
-  CFLAGS += -DGL_NO_STDCALL
-endif
-
-ifeq ($(GLUT_USING_STDCALL),1)
-  CFLAGS += -D_STDCALL_SUPPORTED
-else
-  CFLAGS += -DGLUT_NO_STDCALL
-endif
-
-
 LD = mingw32-g++
 LDFLAGS = -s -L$(TOP)/lib
 
@@ -87,7 +71,8 @@ LDLIBS = -lglut32 -lglu32 -lopengl32
 .c.o:
        $(CC) -o $@ $(CFLAGS) -c $<
 %.exe: ../util/readtex.o ../util/showbuffer.o %.o
-       $(LD) -o $@ $(LDFLAGS) $^ $(LDLIBS)
+       $(LD) -o $@ $(LDFLAGS) $(LDLIBS) $^
+
 
 all:
        $(error Must specify <filename.exe> to build)
index 43b421e737a1bae49297b60a31182f1f5608a17d..d00d97a3b61f2d35c8f10ae168a16d6d3ac95743 100644 (file)
 TOOLS_PREFIX = mingw32-
 
 TOP = ../../..
-
 LIBDIR = $(TOP)/lib
 
-GLU_DLL = glu32.dll
-GLU_IMP = libglu32.a
-GLU_DEF = glu.def
+LIB_NAME = glu32
+DLL_EXT = .dll
+IMP_EXT = .a
+LIB_PRE = lib
+STRIP = -s
+
+AR = ar
+ARFLAGS = crus
+DLLTOOL = dlltool
 
-include $(TOP)/configs/config.mgw
-GL_USING_STDCALL ?= 1
+GLU_DLL = $(LIB_NAME)$(DLL_EXT)
+GLU_IMP = $(LIB_PRE)$(LIB_NAME)$(IMP_EXT)
+GLU_DEF = $(LIB_NAME).def
 
 LDLIBS = -L$(LIBDIR) -lopengl32
-LDFLAGS = -Wl,--out-implib=$(LIBDIR)/$(GLU_IMP) -Wl,--output-def=$(LIBDIR)/$(GLU_DEF)
+LDFLAGS = $(STRIP) -shared -fPIC -Wl,--kill-at
 
 CFLAGS += -DBUILD_GLU32 -D_DLL
 
-ifeq ($(GL_USING_STDCALL),1)
-  LDFLAGS += -Wl,--add-stdcall-alias
-else
-  CFLAGS += -DGL_NO_STDCALL
-endif
 
-CC = gcc
+CC = $(TOOLS_PREFIX)gcc
 CFLAGS += -DNDEBUG -DLIBRARYBUILD -I$(TOP)/include -Iinclude
-CXX = g++
+CXX = $(TOOLS_PREFIX)g++
 CXXFLAGS = $(CFLAGS) -Ilibnurbs/internals -Ilibnurbs/interface -Ilibnurbs/nurbtess
 
 AR = ar
@@ -216,9 +217,9 @@ $(LIBDIR):
        mkdir -p $(LIBDIR)
 
 $(LIBDIR)/$(GLU_DLL) $(LIBDIR)/$(GLU_IMP): $(OBJECTS)
-       g++ -shared -fPIC -o $(LIBDIR)/$(GLU_DLL) $(LDFLAGS) \
-    $^ $(LDLIBS)
-
+       $(CXX) $(LDFLAGS) -o $(LIBDIR)/$(GLU_DLL) $^ $(LDLIBS)
+       $(DLLTOOL) --as=as --dllname $(LIB_NAME) --output-def $(LIBDIR)/$(GLU_DEF) $^
+       $(DLLTOOL) --as=as -k --dllname $(LIB_NAME) --output-lib $(LIBDIR)/$(GLU_IMP) --def $(LIBDIR)/$(GLU_DEF)
 
 
 clean:
index ae4eb6addc54fa765b8a7cf19a32560c5f60b925..9fff2e1503d38e3bb5d14e13bc763a2648a2854f 100644 (file)
@@ -74,35 +74,29 @@ TOP = ../../..
 
 LIBDIR = $(TOP)/lib
 
-GLUT_DLL = glut32.dll
-GLUT_IMP = libglut32.a
-GLUT_DEF = glut.def
+LIB_NAME = glut32
 
-include $(TOP)/configs/config.mgw
-GLUT_USING_STDCALL ?= 1
+DLL_EXT = .dll
+IMP_EXT = .a
+LIB_PRE = lib
+STRIP = -s
 
+AR = ar
+ARFLAGS = crus
+DLLTOOL = dlltool
 
+GLUT_DLL = $(LIB_NAME)$(DLL_EXT)
+GLUT_IMP = $(LIB_PRE)$(LIB_NAME)$(IMP_EXT)
+GLUT_DEF = $(LIB_NAME).def
 
 LDLIBS = -L$(LIBDIR) -lwinmm -lgdi32 -luser32 -lopengl32 -lglu32 
-LDFLAGS = -Wl,--out-implib=$(LIBDIR)/$(GLUT_IMP) -Wl,--output-def=$(LIBDIR)/$(GLUT_DEF) 
+LDFLAGS = $(STRIP) -shared -fPIC -Wl,--kill-at
 
 CFLAGS += -DBUILD_GLUT32 -DGLUT_BUILDING_LIB -DMESA -D_DLL
-
-ifeq ($(GL_USING_STDCALL),0)
-  CFLAGS += -DGL_NO_STDCALL
-endif
-
-ifeq ($(GLUT_USING_STDCALL),1)
-  CFLAGS += -D_STDCALL_SUPPORTED
-  LDFLAGS += -Wl,--add-stdcall-alias
-else
-  CFLAGS += -DGLUT_NO_STDCALL
-endif
-
 CFLAGS += -DNDEBUG -DLIBRARYBUILD -I$(TOP)/include 
 
-CC = gcc
-CXX = g++
+CC = $(TOOLS_PREFIX)gcc
+CXX = $(TOOLS_PREFIX)g++
 CXXFLAGS = $(CFLAGS)
 
 AR = ar
@@ -189,10 +183,9 @@ $(LIBDIR):
        mkdir -p $(LIBDIR)
 
 $(LIBDIR)/$(GLUT_DLL) $(LIBDIR)/$(GLUT_IMP): $(OBJECTS)
-       $(CXX) -shared -fPIC -o $(LIBDIR)/$(GLUT_DLL) $(LDFLAGS) \
-       $^ $(LDLIBS)
-
-
+       $(CXX) $(LDFLAGS) -o $(LIBDIR)/$(GLUT_DLL) $^ $(LDLIBS)
+       $(DLLTOOL) --as=as --dllname $(LIB_NAME) --output-def $(LIBDIR)/$(GLUT_DEF) $^
+       $(DLLTOOL) --as=as -k --dllname $(LIB_NAME) --output-lib $(LIBDIR)/$(GLUT_IMP) --def $(LIBDIR)/$(GLUT_DEF) 
 
 clean:
        -$(call UNLINK,*.o)
\ No newline at end of file
index 3b52834bd1c327fe429e8acf5197dc3c741fca4a..6244ded876837cb4008efc2be2f7419915116a99 100644 (file)
 # Set this to the prefix of your build tools, i.e. mingw32-
 TOOLS_PREFIX = mingw32-
 
+ifeq ($(ICD),1)
+  LIB_NAME = mesa32
+else
+  LIB_NAME = opengl32
+endif
 
+DLL_EXT = .dll
+IMP_EXT = .a
+LIB_PRE = lib
+STRIP = -s
+
+AR = ar
+ARFLAGS = crus
+DLLTOOL = dlltool
 
 TOP = ../..
 GLIDE ?= $(TOP)/glide3
 LIBDIR = $(TOP)/lib
-ifeq ($(ICD),1)
-  GL_DLL = mesa32.dll
-  GL_IMP = libmesa32.a
-else
-  GL_DLL = opengl32.dll
-  GL_IMP = libopengl32.a
-endif
-
-GL_DEF = gl.def
 
-include $(TOP)/configs/config.mgw
-GL_USING_STDCALL ?= 1
+GL_DLL = $(LIB_NAME)$(DLL_EXT)
+GL_IMP = $(LIB_PRE)$(LIB_NAME)$(IMP_EXT)
 
 MESA_LIB = libmesa.a
+CC = $(TOOLS_PREFIX)gcc
 
 LDLIBS = -lgdi32 -luser32 -liberty
-LDFLAGS = -Wl,--out-implib=$(LIBDIR)/$(GL_IMP) -Wl,--output-def=$(LIBDIR)/gl.def
-
-CC = $(TOOLS_PREFIX)gcc
-CFLAGS += -DBUILD_GL32 -D_OPENGL32_ -D_DLL -DMESA_MINWARN -DNDEBUG -D_USRDLL -DGDI_EXPORTS
+LDFLAGS = $(STRIP) -shared -fPIC -Wl,--kill-at
 
-ifeq ($(GL_USING_STDCALL),1)
-  LDFLAGS += -Wl,--add-stdcall-alias
-else
-  CFLAGS += -DGL_NO_STDCALL
-endif
+CFLAGS += -DBUILD_GL32 -D_DLL -DMESA_MINWARN
+CFLAGS += -DNDEBUG -DUSE_EXTERNAL_DXTN_LIB=1
 
-CFLAGS += -DUSE_EXTERNAL_DXTN_LIB=1
 ifeq ($(FX),1)
   CFLAGS += -I$(GLIDE)/include -DFX
   LDLIBS += -L$(GLIDE)/lib -lglide3x
@@ -112,12 +110,11 @@ else
     CFLAGS += -DUSE_MGL_NAMESPACE
     GL_DEF = drivers/windows/icd/mesa.def
   else    
-    GL_DEF = drivers/windows/gdi/mesa.def
+    GL_DEF = $(LIB_NAME).def
   endif
 endif
 
-AR = ar
-ARFLAGS = crus
+
 
 UNLINK = del $(subst /,\,$(1))
 ifneq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),)
@@ -173,14 +170,17 @@ RESOURCE = $(GL_RES:.rc=.res)
 .rc.res:
        windres -o $@ -Irc -Ocoff $<
 
+
 all: $(LIBDIR) $(LIBDIR)/$(GL_DLL) $(LIBDIR)/$(GL_IMP)
 
 $(LIBDIR):
        mkdir -p $(LIBDIR)
 
 $(LIBDIR)/$(GL_DLL) $(LIBDIR)/$(GL_IMP): $(OBJECTS) $(RESOURCE)
-       $(CC) -shared -fPIC -o $(LIBDIR)/$(GL_DLL) $(LDFLAGS) \
-       $^ $(LDLIBS)
+       $(CC) $(LDFLAGS) -o $(LIBDIR)/$(GL_DLL) $^ $(LDLIBS)
+       $(DLLTOOL) --as=as --dllname $(LIB_NAME) --output-def $(LIBDIR)/$(GL_DEF) $^
+       $(DLLTOOL) --as=as -k --dllname $(LIB_NAME) --output-lib $(LIBDIR)/$(GL_IMP) --def $(LIBDIR)/$(GL_DEF)
+
 
 $(X86_OBJECTS): x86/matypes.h