summaryrefslogtreecommitdiff
path: root/xc/extras/Mesa/WIN32
diff options
context:
space:
mode:
Diffstat (limited to 'xc/extras/Mesa/WIN32')
-rw-r--r--xc/extras/Mesa/WIN32/NMAKE.MAK662
-rw-r--r--xc/extras/Mesa/WIN32/NMAKE.MIF2433
-rw-r--r--xc/extras/Mesa/WIN32/RES/Mesa32.rc32
-rw-r--r--xc/extras/Mesa/WIN32/RES/fxMesa32.def473
-rw-r--r--xc/extras/Mesa/WIN32/RES/fxMesa32.rc32
-rw-r--r--xc/extras/Mesa/WIN32/RES/mesa32.def471
-rw-r--r--xc/extras/Mesa/WIN32/RES/mesaglu32.def58
-rw-r--r--xc/extras/Mesa/WIN32/RES/mesaglu32.rc32
-rw-r--r--xc/extras/Mesa/WIN32/RES/mesaglut32.def109
-rw-r--r--xc/extras/Mesa/WIN32/RES/mesaglut32.rc32
-rw-r--r--xc/extras/Mesa/WIN32/RES/s3Mesa32.def463
-rw-r--r--xc/extras/Mesa/WIN32/RES/s3Mesa32.rc32
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.fxmesa40
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.fxmesa3241
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.glu3220
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.glut3220
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.mesa9
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.mesa.core17
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.mesa3224
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.mesaglu4
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.mesaglu.core5
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.mesaglut10
-rw-r--r--xc/extras/Mesa/WIN32/RULES/lib.mesaglut.core19
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos25
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.fire1
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.ipers1
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.rain1
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.teapot1
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.tunnel1
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.tunnel21
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.book38
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.demos35
-rw-r--r--xc/extras/Mesa/WIN32/RULES/progs.samples40
33 files changed, 5182 insertions, 0 deletions
diff --git a/xc/extras/Mesa/WIN32/NMAKE.MAK b/xc/extras/Mesa/WIN32/NMAKE.MAK
new file mode 100644
index 000000000..a9a262663
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/NMAKE.MAK
@@ -0,0 +1,662 @@
+.SILENT:
+
+!INCLUDE <..\mesawin32.mak> # get user directory settings for output
+
+help:
+ more < <<
+usage: nmake[.exe] /f nmake.mak [options] [target]
+where: [target] may be any one of the following ...
+ (default)... shows this text
+ libfiles.... builds all library variations and test programs
+ update...... builds all variations and copies target files
+ to permanent storage locations
+ clean....... deletes all intermediate files
+ realclean .. deletes all intermediate files and all end-executables,
+ restoring directory heirarchy to 'distribution' state.
+ all ........ builds all targets for Mesa-based code
+ all.sgigl .. builds all targets for SGI for Windows OpenGL based code
+ all.sysgl .. builds all targets for Microsoft OpenGL based code
+ ---- build options -----------------
+ MESAVER ................. (3.1) - version of MesaLib().tar.gz to build
+ NOCONSOLE .... [1 | 0] .. (0) ..- Disable console output of progs
+ NODEBUG ...... [1 | 0] .. (0) ..- Disable building of Debug images
+ NORELEASE .... [1 | 0] .. (0) ..- Disable building of Release images
+ USE_CTRDLL ... [1 | 0] .. (0) ..- Enable use of MSVCRT.DLL for CRTL in
+ USE_SYSGL .... [1 | 0 | 2](0) ..- Enable use of System OpenGL/GLU for
+ GLUT and Demo builds. When set to '2' it will link
+ against SGI OpenGL for Windows instead of Microsoft
+ OopenGL.
+ USE_ICC ...... [1 | 0] .. (0) ..- *experimental* - Use Intel C/C++ compiler
+ instead of Microsft compiler, works for both VC4 & VC5.
+ Requires prior installation of the Intel C/C++ compiler.
+ GD_NO_PROGS .. [1 | 0] .. (0) ..- Disable diff generation for MesaDemos.
+ preference to statically linking in the CRTL. Makes for
+ smaller files *but* requires MSVCRT.DLL at runtime.
+ STATIC_MESA .. [1 | 0] .. (0) ..- Meaningful only when building executables.
+ Indicates to the nmake.mak that exe files should be linked with
+ static link libs (mesa|mesaglu|mesaglut).lib instead of the default
+ DLL import libs. This directive trickes down into a compiler macro
+ definition which itself directs the mesa "gl.h" file to redefine
+ APIENTRY, CALLBACK, and WINGDIAPI.
+ ALLWARNINGS .. [1 | 0] .. (1) ..- Enable all compiler warnings.
+
+ GLIDE2SDK ...................... - required to be defined as the path
+ where your Glide 2 SDK is installed. There is no default,
+ however you may provide it as an environment variable by
+ doing something like this prior to executing nmake:
+
+ set GLIDE2SDK=C:\Glide2x
+
+ USENASM ........................ - required to be defined as the command
+ required to execute NASM for assembly of .S modules in
+ .\src\X86. This will require the complete path if nasm
+ is not in your command search path.
+
+
+ ---- special targets ---------------
+ libfiles ........................ all *.lib and *.dll files
+ tests ..........(req libfiles)... all test executables
+ progs ..........(req libfiles)... all demonstration executables
+ progs.samples / progs.demos /
+ progs.book / progs.3dfx.demos ... individual demo program group builds
+ gendiffs ........................ generates complete diffs between
+ original distribution and locally modified source files.
+ gendiffs.clr .................... cleans up behind gendiffs target.
+
+ progs.sysgl ..................... builds all demo programs linking
+ against GLUT32.DLL and Microsoft
+ OpenGL link libraries for using
+ Windows system OpenGL support.
+
+ progs.sgigl ..................... builds all demos programs as progs.sysgl
+ however it links against GLUT.DLL built
+ against the SGI OpenGL for Windows.
+
+ ---- convenience targets -----------
+ allstatic ....................... builds all "standard" static lib files.
+ alldynamic ...................... builds all "standard" dynamic lib files,
+ excluding hardware accelerator versions.
+ allaccel ........................ builds all hardware accelerated versions.
+ allfx ........................... builds all 3Dfx targeted code.
+ alls3 ........................... builds all S3 S3DTK targeted code.
+
+ ---- individual targets ------------
+ mesa, mesaglu, mesaglut ......... static lib builds of respective code.
+
+ mesa32 .......................... dynamic lib build of Mesa core
+
+ fxmesa32 ........................ dynamic lib build for use on top of
+ 3Dfx Glide runtime (for use with
+ 3Dfx Voodoo based display hardware).
+
+ s3mesa32 ........................ dynamic lib build for use on top of
+ S3 'S3Tk' runtime (for use with
+ S3 Virge based display hardware).
+
+ glu32 ........................... dynamic lib build of GLU routines
+
+ glut32 .......................... dynamic lib build of GLUT routines
+
+ glut.sysgl ...................... alias lib build of glut32 using system
+ OpenGL/GLU routines.
+
+ glut.sysgl.install .............. installs generated GLUT and GLUT.H into
+ directores specified at end of this
+ help screen.
+
+ glut.sgigl ...................... alias lib build of glut32 using SGI
+ OopenGL for Windows GL/GLU routines
+
+ glut.sgigl.install .............. installs generated GLUT and GLUT.H into
+ directores specified at end of this
+ help screen.
+
+
+ ---- makefile Author notes ------------------
+ Mesa originated as a project of and is currently maintained by Brian Paul
+ (brianp@elastic.avid.com). Please look the the "canonical" internet sites
+ for detailed information and source distributions, either at:
+
+ http://www.ssec.wisc.edu/~brianp/Mesa.html
+
+ <or>
+
+ ftp://iris.ssec.wisc.edu/pub/Mesa
+
+ This makefile suite built against MS Visual C++ 5.0 SP3 and tested on
+ WindowsNT 4.0 SP3, WindowsNT 5.0b1, Windows95 OSR 2.0, and Windows98.
+
+ ---- output directories as configured -------
+
+ Linking Libs . : $(LIBINSTALL)
+ Runtime Libs . : $(DLLINSTALL)
+ Header Files . : $(HDRINSTALL)
+
+<<
+
+# ----- Default / primary configuration stuff ---------------------------------
+
+# Makefile elections, may be selected by command line but here are the defaults
+#
+# MESAVER - Mesa version
+# NOCONSOLE - when 1, builds executables for Windowed runtime
+#
+
+!IF "$(NOCONSOLE)" == ""
+NOCONSOLE=0
+!ENDIF
+
+!IF "$(NOCONSOLE)" == "1"
+DOGUI=1
+!ELSE
+DOGUI=0
+!ENDIF
+
+# used in building all of the resource files for the Mesa DLLs
+#
+!IF "$(MESAVER)" == ""
+MESAVER=3.1
+!ENDIF
+
+# used in building all of the resource files for the Mesa DLLs
+#
+!IF "$(MESAFILEVER)" == ""
+MESAFILEVER=3,1,0,0
+!ENDIF
+
+# Set to 1 to enable building against MSVCRT.DLL instead of LIBC.LIB
+#
+!IF "$(USE_CRTDLL)" == ""
+USE_CRTDLL=0
+!ENDIF
+
+!IF "$(GD_NO_PROGS)" == ""
+GD_NO_PROGS=0
+!ENDIF
+
+!IF "$(USE_SYSGL)" == ""
+USE_SYSGL=0
+!ENDIF
+
+#---------------------------------------------------------------------
+# shouldn't need to play beyond here ...
+#---------------------------------------------------------------------
+
+!IF "$(LIBBASE)" == ""
+LIBBASE=mesa
+!ENDIF
+
+!IF "$(DLLBASE)" == ""
+DLLBASE=$(LIBBASE)
+!ENDIF
+
+!IF "$(EXEFSERIES_UP)" == ""
+EXEFSERIES_UP=1
+!ENDIF
+
+!IF "$(EXEFILE)" == ""
+EXEFILE=-
+!ENDIF
+
+!IF "$(ALLWARNINGS)" == ""
+ALLWARNINGS=1
+!ENDIF
+
+!IF "$(STATIC_MESA)" == ""
+STATIC_MESA=0
+!ENDIF
+
+!IF "$(DEBUG)" == ""
+DEBUG=0
+!ENDIF
+
+!IF "$(NODEBUG)" == ""
+!IF "$(DEBUG)" == "1"
+NODEBUG=0
+!ELSE
+NODEBUG=1
+!ENDIF
+!ENDIF
+
+!IF "$(NORELEASE)" == ""
+!IF "$(DEBUG)" == "1"
+NORELEASE=1
+!ELSE
+NORELEASE=0
+!ENDIF
+!ENDIF
+
+!IF (("$(DEBUG)" == "1") && ("$(USE_CRTDLL)" == "1"))
+LIBTYPE=d-d
+NORELEASE=1
+NOSTATIC=1
+!ELSEIF (("$(DEBUG)" == "1") && ("$(USE_CRTDLL)" == "0"))
+LIBTYPE=d-s
+NORELEASE=1
+NODYNAMIC=1
+!ELSEIF (("$(DEBUG)" == "0") && ("$(USE_CRTDLL)" == "1"))
+LIBTYPE=r-d
+NODEBUG=1
+NOSTATIC=1
+!ELSE
+LIBTYPE=r-s
+NODEBUG=1
+NODYNAMIC=1
+DEBUG=0
+!ENDIF
+
+# See nmake.mif file for documentations of these settings
+NOPCH=1
+H_FILES=
+
+# Root source directory for primary Mesa lib files, check first that we are
+# "in" the mesa source tree, then go extreme after that.
+
+!IF "$(MESAROOT)" == ""
+!IF EXIST (..\include\gl\gl.h)
+MESAROOT=..
+!ENDIF
+!ENDIF
+
+!IF "$(DEBUG)" == "1"
+DEBTAG=d
+!ELSE
+DEBTAG=
+!ENDIF
+
+OBJDIR_R=.\$(MESAROOT)\lib
+ALTLIBPATH=$(OBJDIR_R)
+
+# ----- Standard meta build rules ---------------------------------------------
+
+all: mesa mesaglu mesaglut\
+ mesa32 glu32 glut32\
+!IF "$(GLIDE2SDK)" != ""
+ fxmesa32\
+!ENDIF
+ progs
+
+all.debug:
+ nmake /nologo /f nmake.mak DEBUG=1 all
+
+all.sysgl: glut.sysgl progs.sysgl
+
+all.sgigl: glut.sgigl progs.sgigl
+
+!IF EXIST(.\include\gl\glut.h)
+CLEANSUPS = .\include
+!ENDIF
+
+realclean: cleanprogs
+ echo. > ..\3dfx\demos\foo.dll
+ echo. > ..\book\foo.dll
+ echo. > ..\demos\foo.dll
+ echo. > ..\samples\foo.dll
+ echo. > ..\3dfx\demos\foo.pdb
+ echo. > ..\book\foo.pdb
+ echo. > ..\demos\foo.pdb
+ echo. > ..\samples\foo.pdb
+ del ..\3dfx\demos\*.dll
+ del ..\demos\*.dll
+ del ..\samples\*.dll
+ del ..\book\*.dll
+ del ..\3dfx\demos\*.pdb
+ del ..\demos\*.pdb
+ del ..\samples\*.pdb
+ del ..\book\*.pdb
+!IF EXIST($(OBJDIR_R))
+ nmake /nologo /f nmake.mak CLEANSUPS=$(OBJDIR_R) clean
+!ELSE
+ nmake /nologo /f nmake.mak clean
+!ENDIF
+
+clean: cleanroot
+
+cleanprogs:
+ echo Clearing DEBUG build files ...
+!IF "$(GLIDE2SDK)" != ""
+ nmake /nologo /f nmake.mak DEBUG=1 EXEFILE=progs.3dfx.demos clrxfileseries
+!ENDIF
+ nmake /nologo /f nmake.mak DEBUG=1 EXEFILE=progs.book clrxfileseries
+ nmake /nologo /f nmake.mak DEBUG=1 EXEFILE=progs.demos clrxfileseries
+ nmake /nologo /f nmake.mak DEBUG=1 EXEFILE=progs.samples clrxfileseries
+ echo Clearing RELEASE build files ...
+!IF "$(GLIDE2SDK)" != ""
+ nmake /nologo /f nmake.mak DEBUG=0 EXEFILE=progs.3dfx.demos clrxfileseries
+!ENDIF
+ nmake /nologo /f nmake.mak DEBUG=0 EXEFILE=progs.book clrxfileseries
+ nmake /nologo /f nmake.mak DEBUG=0 EXEFILE=progs.demos clrxfileseries
+ nmake /nologo /f nmake.mak DEBUG=0 EXEFILE=progs.samples clrxfileseries
+
+# ----- link libraries build rules --------------------------------------------
+
+STATICLIBLIST=mesa.lib mesaglu.lib mesaglut.lib fxmesa.lib
+
+DYNAMICLIBLIST=mesa32.dll glu32.dll glut32.dll
+
+$(STATICLIBLIST) $(STATICLIBLIST:.lib= ):
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(MESAROOT)\lib directory
+ set STATIC_MESA=1
+ set USE_CRTDLL=0
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak EXEFILE=- LIBBASE=$* libupr
+
+$(DYNAMICLIBLIST) $(DYNAMICLIBLIST:.dll= ):
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(MESAROOT)\lib directory
+ set STATIC_MESA=0
+ set USE_CRTDLL=1
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak EXEFILE=- LIBBASE=$* dllupr
+
+glut.sysgl:
+ nmake /nologo /f nmake.mak USE_SYSGL=1 DEBUG=0 glut32
+
+glut.sysgl.install:
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(HDRINSTALL)\GL directory
+ rem <<$(TEMP)\gsi.mak
+.SILENT:
+
+# Linking Libs . : $(LIBINSTALL)
+# Runtime Libs . : $(DLLINSTALL)
+# Header Files . : $(HDRINSTALL)\GL
+
+install: $(LIBINSTALL)\GLUT32.LIB $(DLLINSTALL)\GLUT32.DLL\
+ $(DLLINSTALL)\GLUT32.PDB $(HDRINSTALL)\GL\GLUT.H
+
+$(LIBINSTALL)\GLUT32.LIB: .\Release\GLUT32\GLUT32.LIB
+ echo $(LIBINSTALL)\GLUT32.LIB ...
+ copy .\Release\GLUT32\GLUT32.LIB $(LIBINSTALL)\GLUT32.LIB
+
+$(DLLINSTALL)\GLUT32.DLL: .\Release\GLUT32\GLUT32.DLL
+ echo $(LIBINSTALL)\GLUT32.DLL ...
+ copy .\Release\GLUT32\GLUT32.DLL $(DLLINSTALL)\GLUT32.DLL
+
+$(DLLINSTALL)\GLUT32.PDB: .\Release\GLUT32\GLUT32.PDB
+ echo $(LIBINSTALL)\GLUT32.PDB ...
+ copy .\Release\GLUT32\GLUT32.PDB $(DLLINSTALL)\GLUT32.PDB
+
+$(HDRINSTALL)\GL\GLUT.H: $(MESAROOT)\INCLUDE\GL\GLUT.H
+ echo $(HDRINSTALL)\GL\GLUT.H ...
+ copy $(MESAROOT)\INCLUDE\GL\GLUT.H $(HDRINSTALL)\GL\GLUT.H
+<<KEEP
+ nmake /nologo /f $(TEMP)\gsi.mak install
+
+glut.sgigl:
+ nmake /nologo /f nmake.mak USE_SYSGL=2 DEBUG=1 glut32
+ nmake /nologo /f nmake.mak USE_SYSGL=2 DEBUG=0 glut32
+
+glut.sgigl.install:
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(HDRINSTALL)\GL directory
+ rem <<$(TEMP)\gsi.mak
+.SILENT:
+
+# Linking Libs . : $(LIBINSTALL)
+# Runtime Libs . : $(DLLINSTALL)
+# Header Files . : $(HDRINSTALL)\GL
+
+install: $(LIBINSTALL)\GLUT.LIB $(LIBINSTALL)\GLUTd.LIB\
+ $(DLLINSTALL)\GLUT.DLL $(DLLINSTALL)\GLUTd.DLL\
+ $(DLLINSTALL)\GLUT.PDB $(DLLINSTALL)\GLUTd.PDB
+
+$(LIBINSTALL)\GLUT.LIB: .\Release\GLUT.LIB
+ echo $(LIBINSTALL)\GLUT.LIB ...
+ copy .\Release\GLUT.LIB $(LIBINSTALL)\GLUT.LIB
+
+$(LIBINSTALL)\GLUTd.LIB: .\Debug\GLUTd.LIB
+ echo $(LIBINSTALL)\GLUTd.LIB ...
+ copy .\Debug\GLUTd.LIB $(LIBINSTALL)\GLUTd.LIB
+
+$(DLLINSTALL)\GLUT.DLL: .\Release\GLUT.DLL
+ echo $(LIBINSTALL)\GLUT.DLL ...
+ copy .\Release\GLUT.DLL $(DLLINSTALL)\GLUT.DLL
+
+$(DLLINSTALL)\GLUTd.DLL: .\Debug\GLUTd.DLL
+ echo $(DLLINSTALL)\GLUTd.DLL ...
+ copy .\Debug\GLUTd.DLL $(DLLINSTALL)\GLUTd.DLL
+
+$(DLLINSTALL)\GLUT.PDB: .\Release\GLUT.PDB
+ echo $(LIBINSTALL)\GLUT.PDB ...
+ copy .\Release\GLUT.PDB $(DLLINSTALL)\GLUT.PDB
+
+$(DLLINSTALL)\GLUTd.PDB: .\Debug\GLUTd.PDB
+ echo $(DLLINSTALL)\GLUTd.PDB ...
+ copy .\Debug\GLUTd.PDB $(DLLINSTALL)\GLUTd.PDB
+
+$(HDRINSTALL)\GL\GLUT.H: $(MESAROOT)\INCLUDE\GL\GLUT.H
+ echo $(HDRINSTALL)\GL\GLUT.H ...
+ copy $(MESAROOT)\INCLUDE\GL\GLUT.H $(HDRINSTALL)\GL\GLUT.H
+<<KEEP
+ nmake /nologo /f $(TEMP)\gsi.mak install
+
+update: headers $(STATICLIBLIST:.lib=.up) $(DYNAMICLIBLIST:.dll=.up)
+
+$(STATICLIBLIST:.lib=.up):
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(MESAROOT)\lib directory
+ set STATIC_MESA=1
+ set USE_CRTDLL=0
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak EXEFILE=- LIBBASE=$* libup
+
+$(STATICLIBLIST:.lib=.db):
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(MESAROOT)\lib directory
+ set NORELEASE=1
+ set STATIC_MESA=1
+ set USE_CRTDLL=0
+ set DEBUG=1
+ nmake /nologo /f nmake.mak $*.lib
+
+$(DYNAMICLIBLIST:.dll=.up):
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(MESAROOT)\lib directory
+ set STATIC_MESA=0
+ set USE_CRTDLL=1
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak EXEFILE=- LIBBASE=$* dllup
+
+$(DYNAMICLIBLIST:.dll=.db):
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(MESAROOT)\lib directory
+ set NORELEASE=1
+ set STATIC_MESA=0
+ set USE_CRTDLL=1
+ set DEBUG=1
+ nmake /nologo /f nmake.mak $*.dll
+
+$(DYNAMICLIBLIST:.dll=.status):
+ set STATIC_MESA=0
+ set USE_CRTDLL=1
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak EXEFILE=- LIBBASE=$* status
+
+$(STATICLIBLIST:.lib=.status):
+ set STATIC_MESA=1
+ set USE_CRTDLL=0
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak EXEFILE=- LIBBASE=$* status
+
+$(DYNAMICLIBLIST:.dll=.resources):
+ set STATIC_MESA=0
+ set DEBUG=$(DEBUG)
+ set USE_CRTDLL=1
+ nmake /nologo /f nmake.mak EXEFILE=- LIBBASE=$* resources
+
+libfiles: $(STATICLIBLIST:.lib= ) $(DYNAMICLIBLIST:.dll= )
+
+allstatic: mesa mesaglu mesaglut
+ set STATIC_MESA=1
+ set USE_CRTDLL=0
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak progs.book progs.samples progs.demos
+
+alldynamic: mesa32 glu32 glut32
+ set STATIC_MESA=0
+ set USE_CRTDLL=0
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak progs.book progs.samples progs.demos
+
+allaccel: allfx alls3
+
+allfx: fxmesa32 glu32 glut32
+ set STATIC_MESA=0
+ set USE_CRTDLL=0
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak progs.3dfx.demos
+
+alls3: s3msagl32
+
+fxmesa32:
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(MESAROOT)\lib\FX directory
+ set STATIC_MESA=0
+ set USE_CRTDLL=1
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak EXEFILE=- LIBBASE=$* dllupr
+
+s3mesa32:
+ nmake /nologo /f nmake.mak DIRECTORYNAME=$(MESAROOT)\lib\S3 directory
+ set STATIC_MESA=0
+ set USE_CRTDLL=1
+ set DEBUG=$(DEBUG)
+ nmake /nologo /f nmake.mak EXEFILE=- LIBBASE=$* dllupr
+
+# ----- convenient aliases ----------------------------------------------------
+
+opengl: mesa32
+
+glu: glu32
+
+glut: glut32
+
+s3mesa: s3mesa32
+
+# ----- test/demo program build ruiles ----------------------------------------
+# NOTE: These require previous builds of the mesa libs, et. al., but are not
+# made dependent upon their presence to facilitate SPEED of nmake processing.
+
+PROGSLIST = progs.book.p progs.demos.p progs.samples.p
+PROGSLISTGL = $(PROGSLIST:.p=.sysgl)
+PROGSLISTGL2 = $(PROGSLIST:.p=.sgigl)
+!IF "$(GLIDE2SDK)" != ""
+PROGSLISTST = $(PROGSLIST:.p=.status) progs.3dfx.demos.status
+PROGSLISTM = $(PROGSLIST:.p= ) progs.3dfx.demos
+!ELSE
+PROGSLISTST = $(PROGSLIST:.p=.status)
+PROGSLISTM = $(PROGSLIST:.p= )
+!ENDIF
+
+progs: $(PROGSLISTM)
+
+progs.sysgl: $(PROGSLISTGL)
+
+progs.sgigl: $(PROGSLISTGL2)
+
+$(PROGSLISTM):
+ set STATIC_MESA=$(STATIC_MESA)
+ set DEBUG=$(DEBUG)
+ set USE_CRTDLL=1
+ nmake /nologo /f nmake.mak EXEFILE=$@ exefileseries libcopy
+
+$(PROGSLISTST):
+ set STATIC_MESA=$(STATIC_MESA)
+ set DEBUG=$(DEBUG)
+ set USE_CRTDLL=1
+ nmake /nologo /f nmake.mak EXEFILE=$@ status
+
+$(PROGSLISTGL):
+ set USE_SYSGL=1
+ nmake /nologo /f nmake.mak $*
+
+$(PROGSLISTGL2):
+ set USE_SYSGL=2
+ nmake /nologo /f nmake.mak $*
+
+# ----- program/lib specific options ------------------------------------------
+
+include\gl\glut.h: ..\include\gl\glut.h
+ echo include\GL\glut.h ...
+ nmake /nologo /f nmake.mak DIRECTORYNAME=include\GL directory
+ copy ..\include\GL\glut.h include\GL\glut.h
+
+CPPOPTS=/D__MSC__ /D__WIN32__ /DWIN32 /DWINDOWS_NT /D__i386__\
+ /DNO_PARALLEL /DNO_STEREO
+
+!IF "$(STATIC_MESA)" == "1"
+CPPOPTS=/D_STATIC_MESA $(CPPOPTS)
+!ENDIF
+
+!IF "$(ALLWARNINGS)" != "1"
+CPPOPTS=$(CPPOPTS) /DMESA_MINWARN
+!ENDIF
+
+# -----------------------------------------------------------------------------
+!IF "$(EXEFILE)" == "-" # building a lib of some form ...
+# -----------------------------------------------------------------------------
+
+!IF ("$(DLLBASE)" != "glut32")
+CPPOPTS=$(CPPOPTS) /I$(MESAROOT)\include
+!ENDIF
+
+INTDIRSFX = $(LIBBASE)
+SRCALT1=.\$(MESAROOT)\src
+!INCLUDE .\rules\lib.$(LIBBASE)
+
+# -----------------------------------------------------------------------------
+!ELSEIF "$(EXEFILE)" != "" # building a set of executables ...
+# -----------------------------------------------------------------------------
+
+INTDIRSFX=$(EXEFILE)
+SUPLIBSROOT=.\rules\$(EXEFILE)
+
+!IF "$(USE_SYSGL)" != "0"
+CPPDEPS=include\GL\glut.h
+CPPOPTS=$(CPPOPTS) /I.\include
+!ELSE
+CPPOPTS=$(CPPOPTS) /I$(MESAROOT)\include
+!ENDIF
+
+!IF EXIST (.\rules\$(EXEFILE))
+!INCLUDE .\rules\$(EXEFILE)
+!ENDIF
+
+# Use possibly redefined SRCALT1 here to copy executables
+# to their respective source directories ...
+
+BINDIR = $(SRCALT1)
+
+libcopy:
+ rem <<$(TEMP)\libcopyf.mak
+.SILENT:
+
+$$(TGTFILE): $$(SRCFILE)
+ echo $$(SRCFILE) ...
+ set COPYCMD=/y
+ copy /v $$(SRCFILE) $$(TGTFILE)
+
+copyfile: $$(TGTFILE)
+<<KEEP
+!IF "$(RUNTIMELIBS)" != ""
+ <<$(TEMP)\libcopyf.bat $(OBJDIR_R) $(SRCALT1) $(RUNTIMELIBS)
+@echo off
+set _SRCDIR=%1
+shift
+set _TGTDIR=%1
+shift
+:loops
+nmake /nologo /f $(TEMP)\libcopyf.mak SRCFILE=%_SRCDIR%\%1 TGTFILE=%_TGTDIR% copyfile
+shift
+if not [%1] == [] goto loops
+set _SRCDIR=
+set _TGTDIR=
+<<KEEP
+!ENDIF
+
+# -----------------------------------------------------------------------------
+!ENDIF # EXEFILE keyed selection
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# ----- get final build rules -------------------------------------------------
+# -----------------------------------------------------------------------------
+!IF EXIST (nmake.mif)
+!INCLUDE nmake.mif
+!ELSE
+!INCLUDE <nmake.mif>
+!ENDIF
+# -----------------------------------------------------------------------------
diff --git a/xc/extras/Mesa/WIN32/NMAKE.MIF b/xc/extras/Mesa/WIN32/NMAKE.MIF
new file mode 100644
index 000000000..5996f9008
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/NMAKE.MIF
@@ -0,0 +1,2433 @@
+# ----- Notes on usage --------------------------------------------------------#
+
+!IF "$(PAGER)" == ""
+PAGER=more
+!ENDIF
+
+buildhelp:
+ $(PAGER) < <<
+
+o Controlling Definitions - Directories
+
+TEMP - temporary directory for interim files
+RELDIR - target directory for release build output files
+DEBDIR - target directory for debug build output files
+BINDIR - target directory for EXE/DLL file updates
+USEDIR - target directory for LIB file updates
+INCDIR - target directory for INCLUDE file updates
+INCDIRSFX - target header directory suffx (such as 'gl' for gl/glut.h)
+DISTDIR - target directory for distribution file update
+ (default to ./dist)
+OBJDIRSFX - optional intermediate file directory
+PCHDDIR - target directory for Debug PCH file
+PCHRDIR - target directory for Release PCH file
+SRCFILES - macro that is the list of source file for the current target
+SUPLIBSSRC - similar to SRCFILES but these are *all* added to every link
+ for an 'exefileseries' targeted build.
+SUPLIBDEPS - additional dependencies correlating to SRCFILES, only for
+ an 'exefileseries' targeted build.
+SRCPATH - source file path specification - default path to source
+SRCALT1 - alternate 1 to source files
+SRCALT2 - alternate 2 to source files
+SRCALT3 - alternate 3 to source files
+SRCALT4 - alternate 4 to source files
+SRCALT5 - alternate 5 to source files (addition by TXM, alextxm@tin.it)
+ALTLIBPATH - alternate link time library path
+
+Supported file extensions: .asm, .cpp, .cxx, .cc, .c, .a, .S
+
+o Controlling Definitions - Build Control
+
+BUILD_FOR_P6 - when 1, targeted for PPro, else for Pentium
+BUILD_DLL - when 1, changes some compile flags for building DLL-based
+ code specific flags added to the CL command line are:
+ /GD - optimize for Windows DLL (vs /GA - opt for Windows App)
+CPP_PCH - when 1, uses CPP to build PCH file
+CPPDEPS - additional dependencies which must be built BEFORE compiling
+CPPOPTS - additional options added to c/c++ compile line
+CL_FULL_OPT - when 1, uses '/Ox /Ob2' instead of specific optimizations
+ ------------------------------------------------------------------------------
+ Explanation of compiler optimization used when CL_FULL_OPT is zero (default)
+ ------------------------------------------------------------------------------
+ /Ob2 - automatic-inlining of any suitable code
+ /Oa - Assume No Aliasing of pointers and data
+ /Oi - generate intrinsic functions instead of calls to libc routines
+ /Ot - favor code speed over size
+ /Oy - frame pointer omission, does not setup frame pointers on the stack
+ /Os - control stack checking calls,
+ /Op- - improve floating point consistency - disabled; with this option set to
+ '-' it causes the compiler to generate faster code which attempts to
+ maximize use of the fp registers and minimizing memory reads/writes.
+ Personally, I would like to see this turned to '/Op' to prevent fp
+ computation glitches, however currently this generates a tremendous
+ amount of compiler warnings about fp overflow in computations, and it
+ would significantly slow down the generated code anyway so "*sigh*"
+ ------------------------------------------------------------------------------
+DEBUG - when 1, enables debug build and disables release build
+DEFFILE - when non nil, used during DLL linking
+DLLBASE - base file name for dll (minus '32' moniker)
+DLLBASEADDR - base address of DLL
+DLLBASEFILE - base address reference of DLL
+ NOTE: Use only *one* of DLLBASEADDR or DLLBASEFILE, but not
+ both!
+DOGUI - when 1, links executable for windows GUI subsystem
+EXEFILE - test exe file name, default file for source .c/.cc/.cpp file
+EXETYPE - alias for LIBTYPE, for when building EXE files only
+FORCELINK - Forces link, regardless of undefined/multiply defined symbols
+ (useful for debugging linkage problems)
+LIBBASE - base file name for library
+LIBTYPE - set to desired library build type (d-s, r-s, d-d, r-d)
+LINKTARGET - set to 'app' or 'dll' to specify, affects some CL.EXE options
+MAKEFILE - name of source makefile
+NOSTATIC - when 1, do not build static libs (libc??.lib usage)
+NODYNAMIC - when 1, do not build dynamic libs (msvcrt??.dll usage)
+NODEBUG - when 1, do not build debug libs
+NORELEASE - when 1, do not build release libs
+NOPCH - when 1, do not use PCH file
+NOMULTIBUILD - when 1, disable multi-file rules (MSVC 5(+) only)
+PCHINCROOT - set to file name root that is the PCH include trigger file
+PCHINCFILE - set to file that is the PCH include file for c code
+PCHSOURCEFILE - set to complete source file name for ansi c code
+ (e.g. stdinc.c)
+PCHFILE - set to precompiled header file pathname for ansi c code
+PCHOBJFILE - set to precompiled header file object file pathname for
+ ansi c code
+RCFLAGS - resource compiler option flags
+RCDEFS - user provided resource compiler flags
+STRIPSYMBOLS - strip debugging symbols from release libs
+ (normally even release builds are made with debug symbols)
+SMP - when 1, builds and links as multi-threaded code
+USE_STD_CPP_HDRS- enables C++ exception handling and _STD_USING definition
+USE_ICC - enables use of Intel C/C++ compiler instead of MS
+ uses: 'icl.exe' instead of 'cl.exe'
+ uses: 'xilink.exe' instead of 'link.exe'
+ prefixes link libraries with 'libm' and 'libmmt' to pull
+ them from the ICC install.
+<<
+
+# ----- build options ---------------------------------------------------------#
+
+.SUFFIXES: .asm .cpp .cxx .cc .c .a .S
+
+!IF "$(OS)" == "Windows_NT"
+DELTREE=rd /q /s
+NULL=NUL
+COPYFILE=copy /v
+!ELSE
+DELTREE=deltree /y
+NULL=NUL
+COPYFILE=copy /y/v
+!ENDIF
+
+!IF "$(TESTEXE)" != ""
+!MESSAGE Macro TESTEXE built by client "nmake.mak" file but is outdated.
+EXEFILE=$(TESTEXE)
+!UNDEF TESTEXE
+!ENDIF
+
+!IF "$(NOSTATIC)" == ""
+NOSTATIC=0
+!ENDIF
+
+!IF "$(NODYNAMIC)" == ""
+NODYNAMIC=0
+!ENDIF
+
+!IF "$(DEBUG)" == "1"
+NODEBUG=0
+NORELEASE=1
+!ELSEIF "$(DEBUG)" == "0"
+NODEBUG=1
+NORELEASE=0
+!ENDIF
+
+!IF "$(NODEBUG)" == ""
+NODEBUG=0
+!ENDIF
+
+!IF "$(NORELEASE)" == ""
+NORELEASE=0
+!ENDIF
+
+!IF "$(NOMULTIBUILD)" == ""
+!IF "$(DEBUG)" == "1"
+NOMULTIBUILD=1
+!ELSE
+NOMULTIBUILD=0
+!ENDIF
+!ENDIF
+
+!IF "$(NOPCH)" == ""
+NOPCH=0
+!ENDIF
+
+!IF "$(DOGUI)" == ""
+DOGUI=0
+!ENDIF
+
+!IF "$(FORCELINK)" == ""
+FORCELINK=0
+!ENDIF
+
+!IF "$(USE_ICC)" == ""
+USE_ICC=0
+!ENDIF
+
+!IF "$(USE_STD_CPP_HDRS)" == ""
+USE_STD_CPP_HDRS=0
+!ENDIF
+
+!IF "$(DOGUI)" == "1"
+SUBSYSTEM=windows
+!ELSE
+SUBSYSTEM=console
+!ENDIF
+
+!IF "$(PROC_EXEFILESERIES)" == ""
+PROC_EXEFILESERIES=0
+!ENDIF
+
+!IF "$(CPP_PCH)" == ""
+CPP_PCH=0
+!ENDIF
+
+!IF "$(TEMP)" == ""
+TEMP=.
+!ENDIF
+
+!IF "$(DEVDIR)" == ""
+DEVDIR=..
+#\..\..
+!ENDIF
+
+!IF "$(RELDIR)" == ""
+RELDIR=.\Release
+!ENDIF
+
+!IF "$(DEBDIR)" == ""
+DEBDIR=.\Debug
+!ENDIF
+
+!IF "$(USEDIR)" == ""
+USEDIR=$(DEVDIR)\sdk\lib\win32\vc
+!ENDIF
+
+!IF "$(BINDIR)" == ""
+BINDIR=$(DEVDIR)\sdk\bin
+!ENDIF
+
+!IF "$(DISTDIR)" == ""
+DISTDIR=dist
+!ENDIF
+
+!IF "$(INCDIR)" == ""
+INCDIR=$(DEVDIR)\sdk\h
+!ENDIF
+
+!IF "$(INCDIR_L)" == ""
+INCDIR_L=.
+!ENDIF
+
+!IF "$(INCDIRSFX)" == ""
+INCDIRSFX=-
+!ENDIF
+
+!IF "$(SRCPATH)" == ""
+SRCPATH=.
+!ENDIF
+
+!IF "$(PCHINCROOT)" == ""
+PCHINCROOT=stdinc
+!ENDIF
+
+!IF "$(PCHINCFILE)" == ""
+PCHINCFILE=$(PCHINCROOT).h
+!ENDIF
+
+!IF "$(PCHSOURCEFILE)" == ""
+PCHSOURCEFILE=$(PCHINCROOT).c
+!ENDIF
+
+!IF "$(PCHINCFILEPP)" == ""
+PCHINCFILEPP=$(PCHINCROOT).hpp
+!ENDIF
+
+!IF "$(PCHSOURCEFILEPP)" == ""
+PCHSOURCEFILEPP=$(PCHINCROOT).cpp
+!ENDIF
+
+!IF "$(MAKEFILE)" == ""
+MAKEFILE=nmake.mak
+!ENDIF
+
+!IF "$(NOSTATIC)" == "1"
+CRTTYPE=d
+!ELSE
+CRTTYPE=s
+!ENDIF
+
+!IF "$(CRTTYPE)" == ""
+CRTTYPE=s
+!ENDIF
+
+!IF "$(LINKTARGET)" == ""
+LINKTARGET=app
+!ENDIF
+
+!IF "$(LIBBASE)" == ""
+LIBBASE=mylib
+!ENDIF
+
+!IF "$(DLLBASE)" == ""
+DLLBASE=$(LIBBASE)32
+!ENDIF
+
+!IF "$(BUILD_DLL)" == ""
+BUILD_DLL=0
+!ENDIF
+
+!IF "$(DIRECTORYNAME)" == ""
+DIRECTORYNAME=.\directoryname.default
+!ENDIF
+
+!IF "$(SMP)" == ""
+SMP=0
+!ENDIF
+
+!IF "$(EXEFSERIES_UP)" == "1"
+!IF "$(BINDIR)" == ""
+EXEFSERIES_UP=0
+!ENDIF
+!ENDIF
+
+!IF EXIST (nmake.mif)
+NMAKE_MIF_FILE=nmake.mif
+!ELSE
+NMAKE_MIF_FILE=$(DEVDIR)\sdk\h\nmake.mif
+!ENDIF
+
+!IF "$(DLLBASEADDR)" != ""
+DLLBASEOPT=/base:$(DLLBASEADDR)
+!ELSEIF "$(DLLBASEFILE)" != ""
+DLLBASEOPT=/base:@$(DLLBASEFILE)
+!ELSE
+DLLBASEOPT=
+!ENDIF
+
+!IF "$(STRIPSYMBOLS)" == ""
+STRIPSYMBOLS=0
+!ENDIF
+
+!IF "$(CL_FULL_OPT)" == ""
+CL_FULL_OPT=1
+!ENDIF
+
+# ----- macro resolution / error checking --------------------------------------
+
+# MS DevStudio/VC5 nmake. defines the macro _NMAKE_VER as 162, nmake for
+# VC 4 does not define it, we use this as a tag for conditionals to handle
+# build with VC4 nmake.
+
+_NMAKE_VER_6=6.00.8168.0 # For reference, probably will change with a service pack
+_NMAKE_VER_5=162
+_NMAKE_VER_4=0
+
+!IFNDEF _NMAKE_VER
+_NMAKE_VER=$(_NMAKE_VER_4)
+!ENDIF
+
+!IF "$(EXEFILE)" == ""
+EXEFILE=test
+!ENDIF
+
+!IF ("$(SRCFILES)" == "") && ("$(EXEFILE)" != "")
+SRCFILES=$(EXEFILE).c
+!ELSEIF ("$(SRCFILES)" == "") && ("$(EXEFILE)" == "")
+SRCFILES=main.c
+!ENDIF
+
+OBJ = $(SRCFILES)
+OBJ = $(OBJ:.cpp=.obj)
+OBJ = $(OBJ:.cxx=.obj)
+OBJ = $(OBJ:.cc=.obj)
+OBJ = $(OBJ:.c=.obj)
+OBJ = $(OBJ:.a=.obj)
+OBJ = $(OBJ:.asm=.obj)
+OBJ = $(OBJ:.S=.obj)
+
+!IF "$(RCFILE)" != ""
+OBJ = $(OBJ) $(LIBBASE)$(DEBTAG).res
+!ENDIF
+
+EXEFILESLIST = $(SRCFILES)
+EXEFILESLIST = $(EXEFILESLIST:.cpp=.exe)
+EXEFILESLIST = $(EXEFILESLIST:.cxx=.exe)
+EXEFILESLIST = $(EXEFILESLIST:.cc=.exe)
+EXEFILESLIST = $(EXEFILESLIST:.c=.exe)
+EXEFILESLIST = $(EXEFILESLIST:.a=.exe)
+EXEFILESLIST = $(EXEFILESLIST:.asm=.exe)
+EXEFILESLIST = $(EXEFILESLIST:.S=.exe)
+
+!IF "$(SUPLIBSSRC)" == ""
+EXESUPLIBSLIST =
+!ELSE
+EXESUPLIBSLIST = $(SUPLIBSSRC)
+EXESUPLIBSLIST = $(EXESUPLIBSLIST:.cpp=.lib)
+EXESUPLIBSLIST = $(EXESUPLIBSLIST:.cxx=.lib)
+EXESUPLIBSLIST = $(EXESUPLIBSLIST:.cc=.lib)
+EXESUPLIBSLIST = $(EXESUPLIBSLIST:.c=.lib)
+EXESUPLIBSLIST = $(EXESUPLIBSLIST:.a=.lib)
+EXESUPLIBSLIST = $(EXESUPLIBSLIST:.asm=.lib)
+EXESUPLIBSLIST = $(EXESUPLIBSLIST:.S=.lib)
+!ENDIF
+
+!IF "$(LIBTYPE)" == ""
+!IF "$(NODEBUG)" == "1"
+LIBTYPE=r-$(CRTTYPE)
+!ELSE
+LIBTYPE=d-$(CRTTYPE)
+!ENDIF
+!ENDIF
+
+!IF "$(PCHRDIR)" == ""
+PCHRDIR=$(RELDIR)
+!ENDIF
+
+!IF "$(PCHDDIR)" == ""
+PCHDDIR=$(DEBDIR)
+!ENDIF
+
+!IF "$(LIBTYPE)" == "r-s" # release build / static CRTL linkage
+!IF "$(INTDIRSFX)" != ""
+OBJDIR=$(RELDIR)\$(INTDIRSFX)
+!ELSE
+OBJDIR=$(RELDIR)
+!ENDIF
+PCHDIR=$(PCHRDIR)
+LIBCNTRL=
+LIBSFX=
+EXESFX=
+LIBPFX=
+RCFLAGS=/DNDEBUG
+!IF "$(SMP)" == "0"
+CRTLIB=libc
+CXXRTLIB=libcp
+!ELSE
+CRTLIB=libcmt
+CXXRTLIB=libcpmt
+LIBCNTRL=/D_MT $(LIBCNTRL)
+!ENDIF # SMP
+!ELSEIF "$(LIBTYPE)" == "d-s" # debug build / static CRTL linkage
+!IF "$(INTDIRSFX)" != ""
+OBJDIR=$(DEBDIR)\$(INTDIRSFX)
+!ELSE
+OBJDIR=$(DEBDIR)
+!ENDIF
+PCHDIR=$(PCHDDIR)
+LIBCNTRL=
+LIBSFX=d
+EXESFX=d
+LIBPFX=
+RCFLAGS=/D_DEBUG
+!IF "$(SMP)" == "0"
+CRTLIB=libcd
+CXXRTLIB=libcpd
+!ELSE
+CRTLIB=libcmtd
+CXXRTLIB=libcpmtd
+LIBCNTRL=/D_MT $(LIBCNTRL)
+!ENDIF # SMP
+!ELSEIF "$(LIBTYPE)" == "r-d" # release build / DLL CRTL linkage
+!IF "$(INTDIRSFX)" != ""
+OBJDIR=$(RELDIR)\$(INTDIRSFX)
+!ELSE
+OBJDIR=$(RELDIR)
+!ENDIF
+!IF "$(PCHRDIR)" == "$(RELDIR)"
+PCHDIR=$(PCHRDIR)
+!ELSE
+PCHDIR=$(PCHRDIR)
+!ENDIF
+LIBCNTRL=/D_DLL
+LIBSFX=
+EXESFX=
+LIBPFX=m
+RCFLAGS=/DNDEBUG
+CRTLIB=msvcrt
+CXXRTLIB=msvcprt
+!IF "$(SMP)" == "1"
+LIBCNTRL=/D_MT $(LIBCNTRL)
+!ENDIF # SMP
+!ELSE # "$(LIBTYPE)" == "d-d" # debug build / DLL CRTL linkage
+LIBTYPE=d-d
+!IF "$(INTDIRSFX)" != ""
+OBJDIR=$(DEBDIR)\$(INTDIRSFX)
+!ELSE
+OBJDIR=$(DEBDIR)
+!ENDIF
+!IF "$(PCHDDIR)" == "$(DEBDIR)"
+PCHDIR=$(PCHDDIR)
+!ELSE
+PCHDIR=$(PCHDDIR)
+!ENDIF
+LIBCNTRL=/D_DLL
+LIBSFX=d
+EXESFX=d
+LIBPFX=m
+RCFLAGS=/D_DEBUG
+CRTLIB=msvcrtd
+CXXRTLIB=msvcprtd
+!IF "$(SMP)" == "1"
+LIBCNTRL=/D_MT $(LIBCNTRL)
+!ENDIF # SMP
+!ENDIF
+
+!IF "$(OBJDIR_R)" == ""
+!IF ("$(LIBTYPE)" == "d-d") || ("$(LIBTYPE)" == "d-s")
+OBJDIR_R=$(DEBDIR)
+!ELSE
+OBJDIR_R=$(RELDIR)
+!ENDIF
+!ENDIF
+
+!IF "$(LIBBASE)" == "mylib"
+EEXELIBFILE=
+!ELSE
+EEXELIBFILE=$(OBJDIR)\$(LIBBASE).lib
+!ENDIF
+
+# ----- File list transformation rules -----------------------------------------
+
+filelistxform:
+ rem <<$(TEMP)\$*
+EXEFILESLIST = $(OBJDIR)\$$(EXEFILESLIST: = $(OBJDIR)\)
+OBJ = $(OBJDIR)\$$(OBJ: = $(OBJDIR)\)
+!IF "$(EXESUPLIBSLIST)" != ""
+EXESUPLIBSLIST = $(OBJDIR)\$$(EXESUPLIBSLIST: = $(OBJDIR)\)
+!ENDIF
+<<KEEP
+
+filelistxform.kill:
+ echo. > $(TEMP)\$*
+ del $(TEMP)\$* > $(NULL)
+
+!IF EXIST ($(TEMP)\filelistxform)
+!INCLUDE $(TEMP)\filelistxform
+!ELSE # NOT EXIST ($(TEMP)\filelistxform)
+!IF ("$(LIBTYPE)" == "r-s") || ("$(LIBTYPE)" == "r-d")
+EXEFILESLIST = .\Release\$(EXEFILESLIST: = .\Release\)
+OBJ = .\Release\$(OBJ: = .\Release\)
+!IF "$(EXESUPLIBSLIST)" != ""
+EXESUPLIBSLIST = .\Release\$(EXESUPLIBSLIST: = .\Release\)
+!ENDIF # EXESUPLIBSLIST conditional
+!ELSE
+EXEFILESLIST = .\Debug\$(EXEFILESLIST: = .\Debug\)
+OBJ = .\Debug\$(OBJ: = .\Debug\)
+!IF "$(EXESUPLIBSLIST)" != ""
+EXESUPLIBSLIST = .\Debug\$(EXESUPLIBSLIST: = .\Debug\)
+!ENDIF # EXESUPLIBSLIST conditional
+!ENDIF # LIBTYPE conditional
+!ENDIF # EXIST ($(TEMP)\filelistxform)
+
+# ----- Some final macro building ----------------------------------------------
+
+!IF "$(CPP_PCH)" == "1"
+PCHINCFILE=$(PCHINCFILEPP)
+PCHSOURCEFILE=$(PCHSOURCEFILEPP)
+!ENDIF
+
+!IF "$(DEFFILE)" != ""
+DEFFILEOPT=/def:$(DEFFILE)
+!ELSE
+DEFFILEOPT=
+!ENDIF
+
+!IF "$(PCHFILE)" == ""
+!IF "$(LINKTARGET)" == "dll"
+PCHFILE=$(OBJDIR)\$(DLLBASE)$(LIBSFX).pch
+!ELSE
+PCHFILE=$(OBJDIR)\$(PCHINCROOT).pch
+!ENDIF
+!ENDIF
+
+!IF "$(PCHOBJFILE)" == ""
+!IF "$(LINKTARGET)" == "dll"
+PCHOBJFILE=$(OBJDIR)\$(DLLBASE)$(LIBSFX).obj
+!ELSE
+PCHOBJFILE=$(OBJDIR)\$(PCHINCROOT).obj
+!ENDIF
+!ENDIF
+
+!IF "$(PDBFILE)" == ""
+!IF "$(LINKTARGET)" == "dll"
+PDBFILE=$(OBJDIR)\$(DLLBASE)$(LIBSFX).pdb
+!ELSE
+PDBFILE=$(OBJDIR)\$(PCHINCROOT).pdb
+!ENDIF
+!ENDIF
+
+# ----- basic compiler directives ----------------------------------------------
+
+CLOPTIONS=/nologo /c /GF /Gy /Zl
+MLOPTIONS=/nologo /c /coff /Cx
+
+!IF "$(ALLWARNINGS)" == "0"
+CLOPTIONS=$(CLOPTIONS) /W3
+MLOPTIONS=$(CLOPTIONS) /W3
+!ELSE
+CLOPTIONS=$(CLOPTIONS) /W4
+MLOPTIONS=$(CLOPTIONS) /W4
+!ENDIF
+
+!IF "$(BUILD_DLL)" == "0"
+CLOPTIONS=$(CLOPTIONS) /GA /Gd
+!ELSE
+CLOPTIONS=$(CLOPTIONS) /GD /Gd
+!ENDIF
+
+!IF ("$(LIBTYPE)" == "d-s") || ("$(LIBTYPE)" == "d-d")
+RCFLAGS=/D_DEBUG
+OPTFLAGS=/D_DEBUG /Zi /Od
+MLOPTFLAGS=/D_DEBUG /Zi
+!ELSE
+RCFLAGS=/DNDEBUG
+OPTFLAGS=/DNDEBUG /Zi
+MLOPTFLAGS=/DNDEBUG /Zi
+
+!IF "$(CL_FULL_OPT)" == "1"
+OPTFLAGS = $(OPTFLAGS) /Ox /Ob2
+!ELSE
+OPTFLAGS = $(OPTFLAGS) /Ob2 /Oa /Oi /Ot /Oy /Op-
+!ENDIF
+
+!ENDIF
+
+# ----- Explanation of compiler optimization options ---------
+# /Ob2 - automatic-inlining of any suitable code
+# /Oa - Assume No Aliasing of pointers and data
+# /Oi - generate intrinsic functions instead of calls to libc routines
+# /Ot - favor code speed over size
+# /Oy - frame pointer omission, does not setup frame pointers on the call stack
+# /Os - control stack checking calls,
+# /Op- - improve floating point consistency; note: this option actually is
+# likely to slow down the overall code generated, however it produces
+# more reliable comparisions, etc., by forcing any fp data used
+# after some computations to actually be reloaded from memory
+# instead of just using the 80-bit output from the previous
+# computations. This also causes more flushing to memory of the results.
+# ------------------------------------------------------------
+
+!IF (("$(BUILD_FOR_P6)" == "0") || ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)"))
+CLOPTIONS=$(CLOPTIONS) /G5 /Zp4
+MLOPTIONS=$(MLOPTIONS) /Zp4
+!ELSE
+CLOPTIONS=$(CLOPTIONS) /G6 /GM /Zp8
+MLOPTIONS=$(MLOPTIONS) /Zp8
+!ENDIF
+
+!IF "$(USE_STD_CPP_HDRS)" == "1"
+CPPOPTS=/GX /D_STD_USING $(CPPOPTS)
+!ENDIF
+
+!IF "$(USE_ICC)" == "1"
+CC=icl
+LINK=xilink
+ASM=ml
+!ELSE
+CC=cl
+LINK=link
+ASM=ml
+!ENDIF
+
+!IF "$(LINKTARGET)" == "dll"
+CLOPTIONS=$(CLOPTIONS) /Fd$(PDBFILE)
+!IF "$(CPP_PCH)" == "1"
+PCHOPTS=/Yu"$(PCHINCROOT).hpp" /Fp$(PCHFILE)
+PCHOPTSC=/Yc"$(PCHINCROOT).hpp" /Fp$(PCHFILE)
+!ELSE
+PCHOPTS=/Yu"$(PCHINCROOT).h" /Fp$(PCHFILE)
+PCHOPTSC=/Yc"$(PCHINCROOT).h" /Fp$(PCHFILE)
+!ENDIF # CCP_PCH==1
+!ELSE
+CLOPTIONS=$(CLOPTIONS) /Fd$(PDBFILE)
+!IF "$(CPP_PCH)" == "1"
+PCHOPTS=/Yu"$(PCHINCROOT).hpp" /Fp$(PCHFILE)
+PCHOPTSC=/Yc"$(PCHINCROOT).hpp" /Fp$(PCHFILE)
+!ELSE
+PCHOPTS=/Yu"$(PCHINCROOT).h" /Fp$(PCHFILE)
+PCHOPTSC=/Yc"$(PCHINCROOT).h" /Fp$(PCHFILE)
+!ENDIF # CPP_PCH==1
+!ENDIF
+
+!IF "$(NOPCH)" == "1"
+PCHFILE=
+PCHOBJFILE=
+PCHOPTS=
+PCHOPTSC=
+!ENDIF
+
+!IF "$(INCDIR_L)" != "."
+CLOPTIONS=$(CLOPTIONS) /I$(INCDIR_L)
+RCFLAGS=$(RCFLAGS) /i$(INCDIR_L)
+!ENDIF
+
+!IF "$(RCDEFS)" != ""
+RCFLAGS=$(RCFLAGS) $(RCDEFS)
+!ENDIF
+
+!IF "$(LINKLIBPATH)" == ""
+LINKLIBPATH=/libpath:$(OBJDIR)
+!ELSE
+LINKLIBPATH=$(LINKLIBPATH) /libpath:$(OBJDIR)
+!ENDIF
+
+!IF "$(OBJDIR_R)" != "$(OBJDIR)"
+LINKLIBPATH=/libpath:$(OBJDIR_R) $(LINKLIBPATH)
+!ENDIF
+
+!IF "$(ALTLIBPATH)" != ""
+LINKLIBPATH=/libpath:$(ALTLIBPATH) $(LINKLIBPATH)
+!ENDIF
+
+!IF "$(FORCELINK)" == "M"
+FORCELINKFLAGS=/force:multiple
+!ELSEIF "$(FORCELINK)" == "U"
+FORCELINKFLAGS=/force:unresolved
+!ELSEIF "$(FORCELINK)" == "1"
+FORCELINKFLAGS=/force
+!ELSE
+FORCELINKFLAGS=
+!ENDIF
+
+# ----- Platform SDK compatability items ---------------------------------------
+
+CLOPTIONS=$(CLOPTIONS) /DWIN32 /D_WIN32
+CLOPTIONS=$(CLOPTIONS) /DCRTAPI1=__cdecl /DCRTAPI2=__cdecl /D_X86_=1
+CLOPTIONS=$(CLOPTIONS) /D_WIN95 /D_WIN32_WINDOWS=0x0400 /DWINVER=0x0400
+
+MLOPTIONS=$(MLOPTIONS) /DWIN32 /D_WIN32
+MLOPTIONS=$(MLOPTIONS) /DCRTAPI1=__cdecl /DCRTAPI2=__cdecl /D_X86_=1
+MLOPTIONS=$(MLOPTIONS) /D_WIN95 /D_WIN32_WINDOWS=0x0400 /DWINVER=0x0400
+
+#--------------------------------------------------------------------------------
+# ----- basic compilation rules ------------------------------------------------
+#--------------------------------------------------------------------------------
+
+# ----- PCH file build rule ----------------------------------------------------
+
+!IF "$(NOPCH)" != "1"
+
+$(PCHFILE): $(PCHSOURCEFILE) $(PCHINCFILE) $(PCHDIR)
+ $(CC) $(CLOPTIONS) $(LIBCNTRL) $(OPTFLAGS)\
+ $(CPPOPTS) $(PCHOPTSC)\
+ /Fo$*.obj /Fp$*.pch $(PCHSOURCEFILE)
+
+pch: $(PCHFILE)
+
+!ENDIF
+
+# ----- build rules, default source directory ---------------------------------
+
+!IF (("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") || ("$(NOMULTIBUILD)" != "1"))
+
+{$(SRCPATH)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCPATH)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCPATH)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCPATH)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCPATH)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ELSE
+
+{$(SRCPATH)\}.c{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCPATH)\}.cpp{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCPATH)\}.cc{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCPATH)\}.cxx{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCPATH)\}.asm{$(OBJDIR)\}.obj::
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ENDIF
+
+{$(SRCPATH)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+{$(SRCPATH)\}.rc{$(OBJDIR)\}.res:
+ echo $<
+ rc $(RCFLAGS) /fo$@ $<
+
+!IF "$(PROC_EXEFILESERIES)" == "1"
+
+# This is a special-case build rule utilized by the 'exefileseries.bin' target for
+# constructing an executable from one or more sources files.
+#
+# LIMITATION: All source files MUST be in the same directory!
+#
+
+{$(SRCPATH)\}.c{$(OBJDIR)\}.exe:
+ echo $@
+ rem <<$(OBJDIR)\$(@B).mak
+.SILENT:
+.SUFFIXES: .asm .cpp .cxx .cc .c .a .S
+
+<<KEEP
+ echo !IF EXIST (.\Rules\$(EXEFILE).$(@B))>> $(OBJDIR)\$(@B).mak
+ echo !INCLUDE .\Rules\$(EXEFILE).$(@B)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(SRCFILESX:.c=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cc=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cpp=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.asm=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$(OBJDIR)\$$(XOBJ: = $(OBJDIR)\)>> $(OBJDIR)\$(@B).mak
+ echo !ELSE>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=>> $(OBJDIR)\$(@B).mak
+ echo !ENDIF>> $(OBJDIR)\$(@B).mak
+ type >> $(OBJDIR)\$(@B).mak <<
+
+SRCDIR=$(SRCPATH)
+
+!IF "$(EXEFSERIES_UP)" == "1"
+target: $(BINDIR)\$(@B)$(EXESFX).EXE
+!ELSE
+target: $@
+!ENDIF
+
+$(BINDIR)\$(@B)$(EXESFX).EXE: $@
+ echo Updating $(BINDIR)\$(@B)$(EXESFX).EXE ...
+ $(COPYFILE) $@ $(BINDIR)\$(@B)$(EXESFX).EXE
+
+$@: $(OBJDIR)\$(@B).obj $$(XOBJ)
+ $(LINK) /nologo /subsystem:$(SUBSYSTEM) /nodefaultlib /machine:ix86 /map:$*.map /out:$@\
+ $(FORCELINKFLAGS) $(LINKLIBPATH) $(OBJDIR)\$(@B).obj $$(XOBJ) $(EXELIBS)\
+ $(CRTLIB).lib kernel32.lib gdi32.lib user32.lib oldnames.lib
+
+{$$(SRCDIR)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $$<
+
+{$$(SRCDIR)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+<<KEEP
+ nmake /nologo /f $(OBJDIR)\$(@B).mak
+
+!ENDIF # "$(PROC_EXEFILESERIES)" == "1"
+
+#--------------------------------------------------------------------------------
+# Alternate source directory 1 build rules, defined only if SRCALT1 not null
+#--------------------------------------------------------------------------------
+
+!IF "$(SRCALT1)" != ""
+
+!IF (("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") || ("$(NOMULTIBUILD)" == "1"))
+
+{$(SRCALT1)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT1)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT1)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT1)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ELSE
+
+{$(SRCALT1)\}.c{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT1)\}.cpp{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT1)\}.cc{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT1)\}.cxx{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT1)\}.asm{$(OBJDIR)\}.obj::
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ENDIF
+
+{$(SRCALT1)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+{$(SRCALT1)\}.rc{$(OBJDIR)\}.res:
+ echo $<
+ rc $(RCFLAGS) /fo$@ $<
+
+!IF "$(PROC_EXEFILESERIES)" == "1"
+
+# This is a special-case build rule utilized by the 'exefileseries.bin' target for
+# constructing an executable from one or more sources files.
+#
+# LIMITATION: All source files MUST be in the same directory!
+#
+
+{$(SRCALT1)\}.c{$(OBJDIR)\}.exe:
+ echo $@
+ rem <<$(OBJDIR)\$(@B).mak
+.SILENT:
+.SUFFIXES: .asm .cpp .cxx .cc .c .a .S
+
+<<KEEP
+ echo !IF EXIST (.\Rules\$(EXEFILE).$(@B))>> $(OBJDIR)\$(@B).mak
+ echo !INCLUDE .\Rules\$(EXEFILE).$(@B)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(SRCFILESX:.c=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cc=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cpp=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.asm=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$(OBJDIR)\$$(XOBJ: = $(OBJDIR)\)>> $(OBJDIR)\$(@B).mak
+ echo !ELSE>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=>> $(OBJDIR)\$(@B).mak
+ echo !ENDIF>> $(OBJDIR)\$(@B).mak
+ type >> $(OBJDIR)\$(@B).mak <<
+
+SRCDIR=$(SRCALT1)
+
+!IF "$(EXEFSERIES_UP)" == "1"
+target: $(BINDIR)\$(@B)$(EXESFX).EXE
+!ELSE
+target: $@
+!ENDIF
+
+$(BINDIR)\$(@B)$(EXESFX).EXE: $@
+ echo Updating $(BINDIR)\$(@B)$(EXESFX).EXE ...
+ $(COPYFILE) $@ $(BINDIR)\$(@B)$(EXESFX).EXE
+
+$@: $(OBJDIR)\$(@B).obj $$(XOBJ)
+ $(LINK) /nologo /subsystem:$(SUBSYSTEM) /nodefaultlib /machine:ix86 /map:$*.map /out:$@\
+ $(FORCELINKFLAGS) $(LINKLIBPATH) $(OBJDIR)\$(@B).obj $$(XOBJ) $(EXELIBS)\
+ $(CRTLIB).lib kernel32.lib gdi32.lib user32.lib oldnames.lib
+
+{$$(SRCDIR)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $$<
+
+{$$(SRCDIR)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+<<KEEP
+ nmake /nologo /f $(OBJDIR)\$(@B).mak
+
+!ENDIF # "$(PROC_EXEFILESERIES)" == "1"
+
+!ENDIF
+
+#--------------------------------------------------------------------------------
+# Alternate source directory 2 build rules, defined only if SRCALT2 not null
+#--------------------------------------------------------------------------------
+
+!IF "$(SRCALT2)" != ""
+
+!IF (("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") || ("$(NOMULTIBUILD)" != "1"))
+
+{$(SRCALT2)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT2)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT2)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT2)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT2)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ELSE
+
+{$(SRCALT2)\}.c{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT2)\}.cpp{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT2)\}.cc{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT2)\}.cxx{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT2)\}.asm{$(OBJDIR)\}.obj::
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ENDIF
+
+{$(SRCALT2)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+{$(SRCALT2)\}.rc{$(OBJDIR)\}.res:
+ echo $<
+ rc $(RCFLAGS) /fo$@ $<
+
+!IF "$(PROC_EXEFILESERIES)" == "1"
+
+# This is a special-case build rule utilized by the 'exefileseries.bin' target for
+# constructing an executable from one or more sources files.
+#
+# LIMITATION: All source files MUST be in the same directory!
+#
+
+{$(SRCALT2)\}.c{$(OBJDIR)\}.exe:
+ echo $@
+ rem <<$(OBJDIR)\$(@B).mak
+.SILENT:
+.SUFFIXES: .asm .cpp .cxx .cc .c .a .S
+
+<<KEEP
+ echo !IF EXIST (.\Rules\$(EXEFILE).$(@B))>> $(OBJDIR)\$(@B).mak
+ echo !INCLUDE .\Rules\$(EXEFILE).$(@B)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(SRCFILESX:.c=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cc=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cpp=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.asm=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$(OBJDIR)\$$(XOBJ: = $(OBJDIR)\)>> $(OBJDIR)\$(@B).mak
+ echo !ELSE>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=>> $(OBJDIR)\$(@B).mak
+ echo !ENDIF>> $(OBJDIR)\$(@B).mak
+ type >> $(OBJDIR)\$(@B).mak <<
+
+SRCDIR=$(SRCALT2)
+
+!IF "$(EXEFSERIES_UP)" == "1"
+target: $(BINDIR)\$(@B)$(EXESFX).EXE
+!ELSE
+target: $@
+!ENDIF
+
+$(BINDIR)\$(@B)$(EXESFX).EXE: $@
+ echo Updating $(BINDIR)\$(@B)$(EXESFX).EXE ...
+ $(COPYFILE) $@ $(BINDIR)\$(@B)$(EXESFX).EXE
+
+$@: $(OBJDIR)\$(@B).obj $$(XOBJ)
+ $(LINK) /nologo /subsystem:$(SUBSYSTEM) /nodefaultlib /machine:ix86 /map:$*.map /out:$@\
+ $(FORCELINKFLAGS) $(LINKLIBPATH) $(OBJDIR)\$(@B).obj $$(XOBJ) $(EXELIBS)\
+ $(CRTLIB).lib kernel32.lib gdi32.lib user32.lib oldnames.lib
+
+{$$(SRCDIR)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $$<
+
+{$$(SRCDIR)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+<<KEEP
+ nmake /nologo /f $(OBJDIR)\$(@B).mak
+
+!ENDIF # "$(PROC_EXEFILESERIES)" == "1"
+
+!ENDIF
+
+#--------------------------------------------------------------------------------
+# Alternate source directory 3 build rules, defined only if SRCALT3 not null
+#--------------------------------------------------------------------------------
+
+!IF "$(SRCALT3)" != ""
+
+!IF (("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") || ("$(NOMULTIBUILD)" != "1"))
+
+{$(SRCALT3)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT3)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT3)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT3)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT3)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ELSE
+
+{$(SRCALT3)\}.c{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT3)\}.cpp{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT3)\}.cc{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT3)\}.cxx{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT3)\}.asm{$(OBJDIR)\}.obj::
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ENDIF
+
+{$(SRCALT3)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+{$(SRCALT3)\}.rc{$(OBJDIR)\}.res:
+ echo $<
+ rc $(RCFLAGS) /fo$@ $<
+
+!IF "$(PROC_EXEFILESERIES)" == "1"
+
+# This is a special-case build rule utilized by the 'exefileseries.bin' target for
+# constructing an executable from one or more sources files.
+#
+# LIMITATION: All source files MUST be in the same directory!
+#
+
+{$(SRCALT3)\}.c{$(OBJDIR)\}.exe:
+ echo $@
+ rem <<$(OBJDIR)\$(@B).mak
+.SILENT:
+.SUFFIXES: .asm .cpp .cxx .cc .c .a .S
+
+<<KEEP
+ echo !IF EXIST (.\Rules\$(EXEFILE).$(@B))>> $(OBJDIR)\$(@B).mak
+ echo !INCLUDE .\Rules\$(EXEFILE).$(@B)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(SRCFILESX:.c=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cc=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cpp=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.asm=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$(OBJDIR)\$$(XOBJ: = $(OBJDIR)\)>> $(OBJDIR)\$(@B).mak
+ echo !ELSE>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=>> $(OBJDIR)\$(@B).mak
+ echo !ENDIF>> $(OBJDIR)\$(@B).mak
+ type >> $(OBJDIR)\$(@B).mak <<
+
+SRCDIR=$(SRCALT3)
+
+!IF "$(EXEFSERIES_UP)" == "1"
+target: $(BINDIR)\$(@B)$(EXESFX).EXE
+!ELSE
+target: $@
+!ENDIF
+
+$(BINDIR)\$(@B)$(EXESFX).EXE: $@
+ echo Updating $(BINDIR)\$(@B)$(EXESFX).EXE ...
+ $(COPYFILE) $@ $(BINDIR)\$(@B)$(EXESFX).EXE
+
+$@: $(OBJDIR)\$(@B).obj $$(XOBJ)
+ $(LINK) /nologo /subsystem:$(SUBSYSTEM) /nodefaultlib /machine:ix86 /map:$*.map /out:$@\
+ $(FORCELINKFLAGS) $(LINKLIBPATH) $(OBJDIR)\$(@B).obj $$(XOBJ) $(EXELIBS)\
+ $(CRTLIB).lib kernel32.lib gdi32.lib user32.lib oldnames.lib
+
+{$$(SRCDIR)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $$<
+
+{$$(SRCDIR)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+<<KEEP
+ nmake /nologo /f $(OBJDIR)\$(@B).mak
+
+!ENDIF # "$(PROC_EXEFILESERIES)" == "1"
+
+!ENDIF
+
+#--------------------------------------------------------------------------------
+# Alternate source directory 4 build rules, defined only if SRCALT4 not null
+#--------------------------------------------------------------------------------
+
+!IF "$(SRCALT4)" != ""
+
+!IF (("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") || ("$(NOMULTIBUILD)" != "1"))
+
+{$(SRCALT4)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT4)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT4)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT4)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT4)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ELSE
+
+{$(SRCALT4)\}.c{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT4)\}.cpp{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT4)\}.cc{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT4)\}.cxx{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT4)\}.asm{$(OBJDIR)\}.obj::
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ENDIF
+
+{$(SRCALT4)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+{$(SRCALT4)\}.rc{$(OBJDIR)\}.res:
+ echo $<
+ rc $(RCFLAGS) /fo$@ $<
+
+!IF "$(PROC_EXEFILESERIES)" == "1"
+
+# This is a special-case build rule utilized by the 'exefileseries.bin' target for
+# constructing an executable from one or more sources files.
+#
+# LIMITATION: All source files MUST be in the same directory!
+#
+
+{$(SRCALT4)\}.c{$(OBJDIR)\}.exe:
+ echo $@
+ rem <<$(OBJDIR)\$(@B).mak
+.SILENT:
+.SUFFIXES: .asm .cpp .cxx .cc .c .a .S
+
+<<KEEP
+ echo !IF EXIST (.\Rules\$(EXEFILE).$(@B))>> $(OBJDIR)\$(@B).mak
+ echo !INCLUDE .\Rules\$(EXEFILE).$(@B)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(SRCFILESX:.c=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cc=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cpp=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.asm=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$(OBJDIR)\$$(XOBJ: = $(OBJDIR)\)>> $(OBJDIR)\$(@B).mak
+ echo !ELSE>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=>> $(OBJDIR)\$(@B).mak
+ echo !ENDIF>> $(OBJDIR)\$(@B).mak
+ type >> $(OBJDIR)\$(@B).mak <<
+
+SRCDIR=$(SRCALT4)
+
+!IF "$(EXEFSERIES_UP)" == "1"
+target: $(BINDIR)\$(@B)$(EXESFX).EXE
+!ELSE
+target: $@
+!ENDIF
+
+$(BINDIR)\$(@B)$(EXESFX).EXE: $@
+ echo Updating $(BINDIR)\$(@B)$(EXESFX).EXE ...
+ $(COPYFILE) $@ $(BINDIR)\$(@B)$(EXESFX).EXE
+
+$@: $(OBJDIR)\$(@B).obj $$(XOBJ)
+ $(LINK) /nologo /subsystem:$(SUBSYSTEM) /nodefaultlib /machine:ix86 /map:$*.map /out:$@\
+ $(FORCELINKFLAGS) $(LINKLIBPATH) $(OBJDIR)\$(@B).obj $$(XOBJ) $(EXELIBS)\
+ $(CRTLIB).lib kernel32.lib gdi32.lib user32.lib oldnames.lib
+
+{$$(SRCDIR)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $$<
+
+{$$(SRCDIR)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+<<KEEP
+ nmake /nologo /f $(OBJDIR)\$(@B).mak
+
+!ENDIF # "$(PROC_EXEFILESERIES)" == "1"
+
+!ENDIF
+
+#--------------------------------------------------------------------------------
+# Alternate source directory 5 build rules, defined only if SRCALT5 not null
+#--------------------------------------------------------------------------------
+
+!IF "$(SRCALT5)" != ""
+
+!IF (("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)") || ("$(NOMULTIBUILD)" != "1"))
+
+{$(SRCALT5)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT5)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT5)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT5)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT5)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ELSE
+
+{$(SRCALT5)\}.c{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT5)\}.cpp{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT5)\}.cc{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT5)\}.cxx{$(OBJDIR)\}.obj::
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$(SRCALT5)\}.asm{$(OBJDIR)\}.obj::
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+!ENDIF
+
+{$(SRCALT5)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+{$(SRCALT5)\}.rc{$(OBJDIR)\}.res:
+ echo $<
+ rc $(RCFLAGS) /fo$@ $<
+
+!IF "$(PROC_EXEFILESERIES)" == "1"
+
+# This is a special-case build rule utilized by the 'exefileseries.bin' target for
+# constructing an executable from one or more sources files.
+#
+# LIMITATION: All source files MUST be in the same directory!
+#
+
+{$(SRCALT5)\}.c{$(OBJDIR)\}.exe:
+ echo $@
+ rem <<$(OBJDIR)\$(@B).mak
+.SILENT:
+.SUFFIXES: .asm .cpp .cxx .cc .c .a .S
+
+<<KEEP
+ echo !IF EXIST (.\Rules\$(EXEFILE).$(@B))>> $(OBJDIR)\$(@B).mak
+ echo !INCLUDE .\Rules\$(EXEFILE).$(@B)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(SRCFILESX:.c=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cc=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.cpp=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$$(XOBJ:.asm=.obj)>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=$(OBJDIR)\$$(XOBJ: = $(OBJDIR)\)>> $(OBJDIR)\$(@B).mak
+ echo !ELSE>> $(OBJDIR)\$(@B).mak
+ echo XOBJ=>> $(OBJDIR)\$(@B).mak
+ echo !ENDIF>> $(OBJDIR)\$(@B).mak
+ type >> $(OBJDIR)\$(@B).mak <<
+
+SRCDIR=$(SRCALT5)
+
+!IF "$(EXEFSERIES_UP)" == "1"
+target: $(BINDIR)\$(@B)$(EXESFX).EXE
+!ELSE
+target: $@
+!ENDIF
+
+$(BINDIR)\$(@B)$(EXESFX).EXE: $@
+ echo Updating $(BINDIR)\$(@B)$(EXESFX).EXE ...
+ $(COPYFILE) $@ $(BINDIR)\$(@B)$(EXESFX).EXE
+
+$@: $(OBJDIR)\$(@B).obj $$(XOBJ)
+ $(LINK) /nologo /subsystem:$(SUBSYSTEM) /nodefaultlib /machine:ix86 /map:$*.map /out:$@\
+ $(FORCELINKFLAGS) $(LINKLIBPATH) $(OBJDIR)\$(@B).obj $$(XOBJ) $(EXELIBS)\
+ $(CRTLIB).lib kernel32.lib gdi32.lib user32.lib oldnames.lib
+
+{$$(SRCDIR)\}.c{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $$<
+
+{$$(SRCDIR)\}.cpp{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cc{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.cxx{$(OBJDIR)\}.obj:
+ $(CC) $(CLOPTIONS)\
+ $(LIBCNTRL) $(OPTFLAGS) $(CPPOPTS) $(PCHOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.asm{$(OBJDIR)\}.obj:
+ $(ASM) $(MLOPTIONS)\
+ $(LIBCNTRL) $(MLOPTFLAGS) $(MLOPTS)\
+ /Fo$(OBJDIR)\ $<
+
+{$$(SRCDIR)\}.S{$(OBJDIR)\}.obj:
+ $(CC) -nologo -DNASM_ASSEMBLER /EP $< >$*.as
+ $(USENASM) -o $@ -f win32 $*.as
+ -erase $*.as
+
+<<KEEP
+ nmake /nologo /f $(OBJDIR)\$(@B).mak
+
+!ENDIF # "$(PROC_EXEFILESERIES)" == "1"
+
+!ENDIF
+
+
+#--------------------------------------------------------------------------------
+# utility batch programs
+#--------------------------------------------------------------------------------
+
+$(TEMP)\copyfile.mak: $(NMAKE_MIF_FILE)
+ rem <<$@
+.SILENT:
+.SUFFIXES: .asm .cpp .cxx .cc .c .a .S
+
+$$(TGTFILE): $$(SRCFILE)
+ echo $$(TGTFILE) ...
+ $(COPYFILE) $$(SRCFILE) $$(TGTFILE) > $(NULL)
+
+copyfile: $$(TGTFILE)
+
+copyfileck:
+ echo CopyFile Check: $$(SRCFILE) ... $$(TGTFILE)
+
+<<KEEP
+
+$(TEMP)\copyfiles.bat: $(NMAKE_MIF_FILE)
+ rem <<$@
+@echo off
+set tgtdir=%1
+shift
+set srcdir=%1
+shift
+if [%1]==[] goto nofiles
+if [%tgtdir%] == [-] set tgtdir=
+if not [%tgtdir%] == [] set tgtdir=%tgtdir%\
+if [%srcdir%] == [-] set srcdir=
+if not [%srcdir%] == [] set srcdir=%srcdir%\
+:start
+nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=%SRCDIR%%1" "TGTFILE=%TGTDIR%%1" copyfile
+shift
+if not [%1] == [] goto start
+goto endex
+:nofiles
+echo Error: %0 called with no files!
+echo tgtdir=%tgtdir%
+echo srcdir=%srcdir%
+echo xargs.=%*
+:endex
+set tgtdir=
+set srcdir=
+echo.
+<<KEEP
+
+# ----- Directory checking rules -----------------------------------------------
+
+# ----- Generic directory check rule -------------------------------------------
+
+$(TEMP)\mkpath.exe: nmake.mif
+ rem <<$(TEMP)\mkpath.c
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <direct.h>
+#include <errno.h>
+
+int mkpath(char *);
+
+int main(int n, char **a)
+{
+ int i,rc;
+
+ if (n<2)
+ return 1;
+
+ for (i=1,rc=0;((i<n)&&(rc==0));i++)
+ rc = mkpath(a[i]);
+
+ return rc;
+}
+
+int mkpath(char *path)
+{
+ static char pbuf[2049];
+ static char dbuf[2049];
+ char *token;
+
+ strcpy(pbuf,path);
+
+ if ( (pbuf[0] == '/') || (pbuf[0] == '\\'))
+ strcpy(dbuf,"\\");
+ else
+ strcpy(dbuf,"");
+
+ token = strtok( pbuf, "/\\" );
+
+ while (token)
+ {
+ strcat(dbuf,token);
+
+ if (dbuf[strlen(dbuf)-1] != ':')
+ {
+ FILE *fp;
+
+ fp = fopen(dbuf,"rb");
+ if (fp) fclose(fp);
+
+ if (fp!=NULL)
+ {
+ printf("Error: [%s] is a file!\n", dbuf);
+ return 2;
+ }
+
+ if (mkdir(dbuf)!=0)
+ {
+ switch (errno)
+ {
+ case EEXIST:
+ break;
+ default:
+ printf("Error creating [%s] : %s\n",dbuf,strerror(errno));
+ return 2;
+ }
+ }
+ }
+
+ token = strtok( NULL, "/\\" );
+ if (token) strcat(dbuf,"\\");
+ }
+
+ return 0;
+}
+<<KEEP
+ $(CC) /nologo /MD /Fo$(TEMP)\ /Fe$@ $(TEMP)\mkpath.c
+ $(LINK) /nologo /subsystem:console /nodefaultlib /machine:ix86\
+ /out:$@ $(TEMP)\mkpath.obj msvcrt.lib kernel32.lib gdi32.lib user32.lib oldnames.lib
+
+$(DIRECTORYNAME): $(TEMP)\mkpath.exe
+ if not exist "$@\$(NULL)" $(TEMP)\mkpath "$@"
+
+directory: $(TEMP)\mkpath.exe "$(DIRECTORYNAME)"
+
+# ----- Convenience direcotry checking rules -----------------------------------
+
+!IF ("$(BINDIR)"!="$(DIRECTORYNAME)")
+$(BINDIR):
+ nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+!ENDIF
+
+!IF ("$(INCDIR)"!="$(DIRECTORYNAME)")&&("$(INCDIR)"!="$(BINDIR)")
+$(INCDIR):
+ nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+!ENDIF
+
+!IF ("$(USEDIR)"!="$(DIRECTORYNAME)")&&("$(USEDIR)"!="$(BINDIR)")&&("$(USEDIR)"!="$(INCDIR)")
+$(USEDIR):
+ nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+!ENDIF
+
+!IF ("$(RELDIR)"!="$(DIRECTORYNAME)")&&("$(RELDIR)"!="$(BINDIR)")&&("$(RELDIR)"!="$(INCDIR)")&&("$(RELDIR)"!="$(USEDIR)")
+$(RELDIR):
+ nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+!ENDIF
+
+!IF ("$(DEBDIR)"!="$(DIRECTORYNAME)")&&("$(DEBDIR)"!="$(BINDIR)")&&("$(DEBDIR)"!="$(INCDIR)")&&("$(DEBDIR)"!="$(USEDIR)")&&("$(DEBDIR)"!="$(RELDIR)")
+$(DEBDIR):
+ nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+!ENDIF
+
+!IF ("$(DISTDIR)"!="$(DIRECTORYNAME)")&&("$(DISTDIR)"!="$(BINDIR)")&&("$(DISTDIR)"!="$(INCDIR)")&&("$(DISTDIR)"!="$(USEDIR)")&&("$(DISTDIR)"!="$(RELDIR)")&&("$(DISTDIR)"!="$(DEBDIR)")
+$(DISTDIR):
+ nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+!ENDIF
+
+!IF ("$(OBJDIR)"!="$(DIRECTORYNAME)")&&("$(OBJDIR)"!="$(BINDIR)")&&("$(OBJDIR)"!="$(INCDIR)")&&("$(OBJDIR)"!="$(USEDIR)")&&("$(OBJDIR)"!="$(RELDIR)")&&("$(OBJDIR)"!="$(DEBDIR)")&&("$(OBJDIR)"!="$(DISTDIR)")
+$(OBJDIR):
+ nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+!ENDIF
+
+!IF ("$(RELDIR)"!="$(DIRECTORYNAME)")&&("$(RELDIR)"!="$(BINDIR)")&&("$(RELDIR)"!="$(INCDIR)")&&("$(RELDIR)"!="$(USEDIR)")&&("$(RELDIR)"!="$(RELDIR)")&&("$(RELDIR)"!="$(DEBDIR)")&&("$(RELDIR)"!="$(DISTDIR)")&&("$(RELDIR)"!="$(OBJDIR)")
+$(RELDIR):
+ nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+!ENDIF
+
+!IF ("$(DEBDIR)"!="$(DIRECTORYNAME)")&&("$(DEBDIR)"!="$(BINDIR)")&&("$(DEBDIR)"!="$(INCDIR)")&&("$(DEBDIR)"!="$(USEDIR)")&&("$(DEBDIR)"!="$(RELDIR)")&&("$(DEBDIR)"!="$(DEBDIR)")&&("$(DEBDIR)"!="$(DISTDIR)")&&("$(DEBDIR)"!="$(OBJDIR)")
+$(DEBDIR):
+ nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+!ENDIF
+
+# $(PCHDDIR): nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+
+# $(PCHRDIR): nmake /nologo /f nmake.mak "DIRECTORYNAME=$@" directory
+
+# ----- Header file update list ------------------------------------------------
+
+headers: $(INCDIR) $(TEMP)\copyfile.mak $(TEMP)\copyfiles.bat
+!IF "$(INCDIRSFX)" == "-"
+ $(TEMP)\copyfiles.bat $(INCDIR) $(INCDIR_L) $(H_FILES)
+!ELSE
+ $(TEMP)\copyfiles.bat $(INCDIR)\$(INCDIRSFX) $(INCDIR_L)\$(INCDIRSFX) $(H_FILES)
+!ENDIF
+
+headers.ck: $(INCDIR) $(TEMP)\copyfile.mak $(TEMP)\copyfiles.bat
+!IF "$(INCDIRSFX)" == "-"
+ echo $(TEMP)\copyfiles.bat $(INCDIR) $(INCDIR_L) $(H_FILES)> $(TEMP)\headers.bat
+!ELSE
+ echo $(TEMP)\copyfiles.bat $(INCDIR)\$(INCDIRSFX) $(INCDIR_L)\$(INCDIRSFX) $(H_FILES)> $(TEMP)\headers.bat
+!ENDIF
+ type $(TEMP)\headers.bat
+
+# ----- Shared Object File dependancy directives -------------------------------
+
+!IF "$(OBJDIR_R)" != "$(OBJDIR)"
+obj: $(CPPDEPS) $(OBJDIR_R) $(OBJDIR) $(PCHFILE) $(OBJ)
+!ELSE
+obj: $(CPPDEPS) $(OBJDIR) $(PCHFILE) $(OBJ)
+!ENDIF
+
+!IF ("$(COPYSOURCE)"!="") && ("$(COPYTARGET)"!="")
+copyfile: $(TEMP)\copyfile.mak
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(COPYSOURCE)" "TGTFILE=$(COPYTARGET)" copyfile
+!ENDIF
+
+# ----- Static Library build directives ----------------------------------------
+
+$(OBJDIR)\$(LIBBASE)$(LIBSFX).lib: obj
+ echo $@ ...
+ lib /nologo /nodefaultlib /verbose /out:$@ /subsystem:$(SUBSYSTEM) @<<
+$(OBJ: =
+)
+<<
+
+libbin: $(OBJDIR)\$(LIBBASE)$(LIBSFX).lib
+
+lib:
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) filelistxform
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) libbin
+ nmake /nologo /f nmake.mak filelistxform.kill
+
+$(USEDIR)\$(LIBPFX)$(LIBBASE)$(LIBSFX).lib: $(OBJDIR)\$(LIBBASE)$(LIBSFX).lib
+ echo $@ ...
+ $(COPYFILE) $? $@ > $(NULL)
+
+libup: $(USEDIR) lib $(TEMP)\copyfile.mak
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(LIBBASE)$(LIBSFX).lib" "TGTFILE=$(USEDIR)\$(LIBPFX)$(LIBBASE)$(LIBSFX).lib" copyfile
+
+libupck: $(USEDIR) lib $(TEMP)\copyfile.mak
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(LIBBASE)$(LIBSFX).lib" "TGTFILE=$(USEDIR)\$(LIBPFX)$(LIBBASE)$(LIBSFX).lib" copyfileck
+
+!IF "$(OBJDIR_R)" != "$(OBJDIR)"
+libupr: $(USEDIR) lib $(TEMP)\copyfile.mak
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(LIBBASE)$(LIBSFX).lib" "TGTFILE=$(OBJDIR_R)\$(LIBBASE)$(LIBSFX).lib" copyfile
+!ENDIF
+
+# ----- Dynamic Library build directives ---------------------------------------
+
+# Note: Shares 'obj' subtarget with normal 'lib' build and 'exe' build
+
+!IF "$(RCFILE)" != ""
+$(OBJDIR)\$(LIBBASE)$(DEBTAG).res: $(RCFILE)
+ echo $(RCFILE) ...
+ rc $(RCFLAGS) /fo$@ $(RCFILE)
+
+resources: $(OBJDIR)\$(LIBBASE)$(DEBTAG).res
+!ENDIF
+
+$(OBJDIR)\$(DLLBASE)$(LIBSFX).dll: obj
+ echo $@ ...
+ $(LINK) > $*.err /nologo @<<$*.rsp
+/out:$@
+/opt:ref
+/machine:ix86
+/debug
+/pdb:$*.pdb
+/map:$*.map
+/dll
+!IF "$(FORCELINKFLAGS)" != ""
+$(FORCELINKFLAGS: =
+)
+!ENDIF
+!IF "$(LINKLIBPATH)" != ""
+$(LINKLIBPATH: =
+)
+!ENDIF
+!IF "$(DLLBASEOPT)" != ""
+$(DLLBASEOPT)
+!ENDIF
+!IF "$(DEFFILEOPT)" != ""
+$(DEFFILEOPT)
+!ENDIF
+/nodefaultlib
+/swaprun:cd
+/swaprun:net
+$(OBJ: =
+)
+!IF "$(DLLLIBS)" != ""
+$(DLLLIBS: =
+)
+!ENDIF
+$(CRTLIB).lib
+!IF "$(USE_STD_CPP_HDRS)" == "1"
+$(CXXRTLIB).lib
+!ENDIF
+kernel32.lib
+gdi32.lib
+user32.lib
+oldnames.lib
+<<KEEP
+
+dllbin: $(OBJDIR)\$(DLLBASE)$(LIBSFX).dll
+
+dll: $(DEFFILE)
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) filelistxform
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) BUILD_DLL=1 dllbin
+ nmake /nologo /f nmake.mak filelistxform.kill
+
+dllup: $(BINDIR) $(USEDIR) dll $(TEMP)\copyfile.mak
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(DLLBASE)$(LIBSFX).dll" "TGTFILE=$(BINDIR)\$(DLLBASE)$(LIBSFX).dll" copyfile
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(DLLBASE)$(LIBSFX).pdb" "TGTFILE=$(BINDIR)\$(DLLBASE)$(LIBSFX).pdb" copyfile
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(DLLBASE)$(LIBSFX).lib" "TGTFILE=$(USEDIR)\$(DLLBASE)$(LIBSFX).lib" copyfile
+
+!IF "$(OBJDIR_R)" != "$(OBJDIR)"
+dllupr: dll $(TEMP)\copyfile.mak
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(DLLBASE)$(LIBSFX).dll" "TGTFILE=$(OBJDIR_R)\$(DLLBASE)$(LIBSFX).dll" copyfile
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(DLLBASE)$(LIBSFX).pdb" "TGTFILE=$(OBJDIR_R)\$(DLLBASE)$(LIBSFX).pdb" copyfile
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(DLLBASE)$(LIBSFX).lib" "TGTFILE=$(OBJDIR_R)\$(DLLBASE)$(LIBSFX).lib" copyfile
+!ENDIF
+
+# ----- Execuable build directives (full multi-module exe) ---------------------
+
+# Note: Shares 'obj' subtarget with normal 'lib' build and 'dll' build
+
+!IF "$(PROC_EXEFILESERIES)" == "0"
+
+$(OBJDIR)\$(EXEFILE)$(EXESFX).exe: obj
+ echo $@ ...
+ $(LINK) > $*.err /nologo @<<$(OBJDIR)\$(EXEFILE)$(EXESFX).lnk
+/debug /map:$*.map
+/subsystem:$(SUBSYSTEM) $(FORCELINKFLAGS)
+/nodefaultlib /swaprun:cd /swaprun:net
+$(LINKLIBPATH)
+/machine:ix86
+/out:$@ $(DEFFILEOPT)
+$(OBJ: =
+)
+$(EXELIBS: =
+)
+$(CRTLIB).lib
+!IF "$(USE_STD_CPP_HDRS)" == "1"
+$(CXXRTLIB).lib
+!ENDIF
+kernel32.lib
+gdi32.lib
+user32.lib
+oldnames.lib
+<<KEEP
+
+exebin: $(OBJDIR)\$(EXEFILE)$(EXESFX).EXE
+
+exe: $(DEFFILE)
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) filelistxform
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) exebin
+ nmake /nologo /f nmake.mak filelistxform.kill
+
+exeup: $(BINDIR) exe $(TEMP)\copyfile.mak
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(EXEFILE)$(EXESFX).EXE" "TGTFILE=$(BINDIR)\$(EXEFILE)$(EXESFX).EXE" copyfile
+
+exeupck: $(BINDIR) exe $(TEMP)\copyfile.mak
+ nmake /nologo /f $(TEMP)\copyfile.mak "SRCFILE=$(OBJDIR)\$(EXEFILE)$(EXESFX).EXE" "TGTFILE=$(BINDIR)\$(EXEFILE)$(EXESFX).EXE" copyfileck
+
+!ENDIF # "$(PROC_EXEFILESERIES)" == "0"
+
+# ----- meta-lib build - all libs & test executable ----------------------------
+
+metalib:
+ echo Building '$(LIBBASE)' series ...
+!IF ( ("$(NODEBUG)" == "0") && ("$(NOSTATIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-s LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ lib
+!ENDIF
+!IF ( ("$(NODEBUG)" == "0") && ("$(NODYNAMIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ lib
+!ENDIF
+!IF ( ("$(NORELEASE)" == "0") && ("$(NOSTATIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-s LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ lib
+!ENDIF
+!IF ( ("$(NORELEASE)" == "0") && ("$(NODYNAMIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ lib
+!ENDIF
+!IF ( ("$(NORELEASE)" == "0") && ("$(NODYNAMIC)" == "0") && ("$(EXE)" != "") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ exe
+!ENDIF
+ echo.
+
+# ----- use/bin directories update ---------------------------------------------
+
+metalibup:
+ echo Updating '$(LIBBASE)' series ...
+!IF ( ("$(NORELEASE)" == "0") && ("$(NOSTATIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-s LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libup
+!ENDIF
+!IF ( ("$(NORELEASE)" == "0") && ("$(NODYNAMIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libup
+!ENDIF
+!IF ( ("$(NODEBUG)" == "0") && ("$(NOSTATIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-s LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libup
+!ENDIF
+!IF ( ("$(NODEBUG)" == "0") && ("$(NODYNAMIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libup
+!ENDIF
+!IF ( ("$(NORELEASE)" == "0") && ("$(NODYNAMIC)" == "0") && ("$(EXE)" != "") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ exeup
+!ENDIF
+ echo.
+
+!IF "$(OBJDIR_R)" != "$(OBJDIR)"
+metalibupr:
+ echo Updating '$(LIBBASE)' series (local) ...
+!IF ( ("$(NORELEASE)" == "0") && ("$(NOSTATIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-s LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libupr
+!ENDIF
+!IF ( ("$(NORELEASE)" == "0") && ("$(NODYNAMIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libupr
+!ENDIF
+!IF ( ("$(NODEBUG)" == "0") && ("$(NOSTATIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-s LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libupr
+!ENDIF
+!IF ( ("$(NODEBUG)" == "0") && ("$(NODYNAMIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libupr
+!ENDIF
+ echo.
+!ENDIF
+
+metalibupck:
+ echo Updating '$(LIBBASE)' series ...
+!IF ( ("$(NORELEASE)" == "0") && ("$(NOSTATIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-s LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libupck
+!ENDIF
+!IF ( ("$(NORELEASE)" == "0") && ("$(NODYNAMIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libupck
+!ENDIF
+!IF ( ("$(NODEBUG)" == "0") && ("$(NOSTATIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-s LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libupck
+!ENDIF
+!IF ( ("$(NODEBUG)" == "0") && ("$(NODYNAMIC)" == "0") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libupck
+!ENDIF
+!IF ( ("$(NORELEASE)" == "0") && ("$(NODYNAMIC)" == "0") && ("$(EXE)" != "") )
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-d LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ libupck
+!ENDIF
+ echo.
+
+# ----- DLL meta rule
+
+metadll:
+ echo Building '$(LIBBASE)' DLL series ...
+!IF ("$(NORELEASE)" == "0")
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-$(CRTTYPE) LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ dll
+!ENDIF
+!IF ("$(NODEBUG)" == "0")
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-$(CRTTYPE) LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ dll
+!ENDIF
+ echo.
+
+# ----- DLL meta=update rule
+
+metadllup:
+ echo Updating '$(LIBBASE)' series ...
+!IF ("$(NORELEASE)" == "0")
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-$(CRTTYPE) LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ dllup
+!ENDIF
+!IF ("$(NODEBUG)" == "0")
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-$(CRTTYPE) LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ dllup
+!ENDIF
+ echo.
+
+metadllupr:
+ echo Updating '$(LIBBASE)' series (local) ...
+!IF ("$(NORELEASE)" == "0")
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=r-$(CRTTYPE) LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ dllupr
+!ENDIF
+!IF ("$(NODEBUG)" == "0")
+ nmake /nologo /f $(MAKEFILE) LIBTYPE=d-$(CRTTYPE) LIBBASE=$(LIBBASE)\
+ EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) DLLBASE=$(DLLBASE)\
+ NOSTATIC=$(NOSTATIC) NODYNAMIC=$(NODYNAMIC)\
+ NODEBUG=$(NODEBUG) NORELEASE=$(NORELEASE)\
+ dllupr
+!ENDIF
+ echo.
+
+# ----- Single-Step source->exe build list ------------------------------------
+
+exefileseries.msg:
+ type <<
+
+----- Building executable file/series --------------------------------
+$(EXEFILESLIST)
+----------------------------------------------------------------------
+
+<<
+
+!IF "$(OBJDIR_R)" != "$(OBJDIR)"
+exefileseries.bin: exefileseries.msg $(CPPDEPS) $(OBJDIR_R) $(OBJDIR) $(EXESUPLIBSLIST) $(EXEFILESLIST)
+!ELSE
+exefileseries.bin: exefileseries.msg $(CPPDEPS) $(OBJDIR) $(EXESUPLIBSLIST) $(EXEFILESLIST)
+!ENDIF
+
+suplibdeps: $(SUPLIBDEPS)
+
+exefileseries: # suplibdeps
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) filelistxform
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) PROC_EXEFILESERIES=1 exefileseries.bin
+
+exefilestatus:
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) filelistxform
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) status
+
+EXEFSERIESLIST = $(SRCFILES:.asm=.exe)
+EXEFSERIESLIST = $(EXEFSERIESLIST:.cpp=.exe)
+EXEFSERIESLIST = $(EXEFSERIESLIST:.cxx=.exe)
+EXEFSERIESLIST = $(EXEFSERIESLIST:.cc=.exe)
+EXEFSERIESLIST = $(EXEFSERIESLIST:.c=.exe)
+EXEFSERIESLIST = $(EXEFSERIESLIST:.a=.exe)
+
+!IF "$(OBJDIR_R)" != "$(OBJDIR)"
+exefileseries.copy: exefileseries.msg $(OBJDIR_R) $(OBJDIR) $(EXESUPLIBSLIST) $(EXEFILESLIST)
+!ELSE
+exefileseries.copy: exefileseries.msg $(OBJDIR) $(EXESUPLIBSLIST) $(EXEFILESLIST)
+!ENDIF
+ echo Updating $(BINDIR) ...
+ echo.
+ $(TEMP)\copyfiles.bat $(BINDIR) $(OBJDIR) $(EXEFSERIESLIST)
+
+exefileseriesup: $(TEMP)\copyfile.mak $(TEMP)\copyfiles.bat
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) filelistxform
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) PROC_EXEFILESERIES=1 exefileseries.copy
+
+# ----- Clear exes from build and optional target directories -----------------
+
+EXEFILESLISTCLR = $(SRCFILES:.asm=.exe)
+EXEFILESLISTCLR = $(EXEFILESLISTCLR:.cpp=.exe)
+EXEFILESLISTCLR = $(EXEFILESLISTCLR:.cxx=.exe)
+EXEFILESLISTCLR = $(EXEFILESLISTCLR:.cc=.exe)
+EXEFILESLISTCLR = $(EXEFILESLISTCLR:.c=.exe)
+EXEFILESLISTCLR = $(EXEFILESLISTCLR:.a=.exe)
+
+!IF "$(DEBUG)" == "1"
+EXEFILESLISTCLR = $(EXEFILESLISTCLR:.exe=d.exe)
+!ENDIF
+
+clrxfileseries.msg:
+ echo ... cleaning $(BINDIR) ...
+
+$(EXEFILESLISTCLR:.exe=.execlr):
+ if exist "$(BINDIR)\$(@B).EXE" echo ... removing $(BINDIR)\$(@B).EXE
+ if exist "$(BINDIR)\$(@B).EXE" del "$(BINDIR)\$(@B).EXE"
+
+exefileseries.clr: clrxfileseries.msg $(EXEFILESLISTCLR:.exe=.execlr)
+
+clrxfileseries:
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) filelistxform
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) PROC_EXEFILESERIES=1 exefileseries.clr
+ nmake /nologo /f nmake.mak filelistxform.kill
+
+# ----- Distribution setup ----------------------------------------------------
+
+!IF "$(NMAKE_MIF_FILE)" != "nmake.mif"
+nmake.mif: $(NMAKE_MIF_FILE)
+ echo $@ ...
+ $(COPYFILE) $? $@ > $(NULL)
+!ENDIF
+
+_distfiles: $(TEMP)\copyfile.mak $(TEMP)\copyfiles.bat
+ echo $@ not yet ready for prime time.
+
+_distfiles.old:
+!IF "$(H_FILES)" != ""
+ $(TEMP)\copyfiles $(DISTDIR) . $(INCDIRSFX) $(H_FILES)
+!ENDIF
+!IF "$(MANIFEST)" != ""
+ $(TEMP)\copyfiles $(DISTDIR) . - $(MANIFEST)
+!ENDIF
+
+distcore: $(DISTDIR) $(NMAKE_MIF_FILE) _distfiles
+
+# ----- Cleanup ---------------------------------------------------------------
+
+cleanlib:
+ -if exist "$(OBJDIR)\$(NULL)" $(DELTREE) $(OBJDIR)
+
+cleanexe:
+ echo. > $(EXEFILE).EXE
+ del $(EXEFILE).exe > $(NULL)
+
+cleanroot: $(RELDIR) $(DEBDIR)
+ -$(DELTREE) $(RELDIR) $(DEBDIR) > $(NULL)
+!IF "$(CLEANSUPS)" != ""
+ -$(DELTREE) $(CLEANSUPS) > $(NULL)
+!ENDIF
+ echo. > foo.ncb
+ del *.ncb > $(NULL)
+ echo. > $(TEMP)\copyfiles.bat
+ del $(TEMP)\copyfiles.bat > $(NULL)
+ echo. > $(TEMP)\copyfile.mak
+ del $(TEMP)\copyfile.mak > $(NULL)
+
+# ----- special common targets ------------------------------------------------
+
+status.core:
+ $(PAGER) < <<$(TEMP)\nmake.status
+Status Information - Directories
+----------------------------------------------------------------------
+BINDIR........... = $(BINDIR)
+DEBDIR........... = $(DEBDIR)
+DEVDIR........... = $(DEVDIR)
+DISTDIR.......... = $(DISTDIR)
+INCDIR........... = $(INCDIR)
+INCDIR_L......... = $(INCDIR_L)
+INTDIRSFX........ = $(INTDIRSFX)
+OBJDIR........... = $(OBJDIR)
+OBJDIR_R......... = $(OBJDIR_R)
+PCHDIR........... = $(PCHDIR)
+PCHRDIR.......... = $(PCHRDIR)
+PCHDDIR.......... = $(PCHDDIR)
+RELDIR........... = $(RELDIR)
+SRCPATH.......... = $(SRCPATH)
+SRCALT1.......... = $(SRCALT1)
+SRCALT2.......... = $(SRCALT2)
+SRCALT3.......... = $(SRCALT3)
+SRCALT4.......... = $(SRCALT4)
+ALTLIBPATH....... = $(ALTLIBPATH)
+TEMP............. = $(TEMP)
+USEDIR........... = $(USEDIR)
+----------------------------------------------------------------------
+Status Information - Build Control
+----------------------------------------------------------------------
+CRTLIB........... = $(CRTLIB)
+CRTTYPE.......... = $(CRTTYPE)
+DEBUG............ = $(DEBUG)
+DLL.............. = $(OBJDIR)\$(DLLBASE).dll
+DLLBASE.......... = $(DLLBASE)
+DLLIMPLIB........ = $(OBJDIR)\$(DLLBASE).lib
+DOGUI............ = $(DOGUI)
+EXELIBS.......... = $(EXELIBS)
+EXESFX........... = $(EXESFX)
+EXETYPE.......... = $(EXETYPE)
+FORCELINK........ = $(FORCELINK)
+LIB.............. = $(OBJDIR)\$(LIBPFX)$(LIBBASE)$(LIBSFX).lib
+LIBBASE.......... = $(LIBBASE)
+LIBTYPE.......... = $(LIBTYPE)
+LINKTARGET....... = $(LINKTARGET)
+MAKEFILE......... = $(MAKEFILE)
+NODEBUG.......... = $(NODEBUG)
+NODYNAMIC........ = $(NODYNAMIC)
+NOPCH............ = $(NOPCH)
+NORELEASE........ = $(NORELEASE)
+NOSTATIC......... = $(NOSTATIC)
+----------------------------------------------------------------------
+Status Information - Compiler Options
+----------------------------------------------------------------------
+!IF "$(LIBCNTRL)" == ""
+CLOPTIONS........ = (starts on next line)
+$(CLOPTIONS) -----##----
+MLOPTIONS........ = (starts on next line)
+$(MLOPTIONS) -----##----
+!ELSE
+CLOPTIONS........ = (incl. LIBCNTRL, starts on next line)
+$(CLOPTIONS) $(LIBCNTRL) -----##----
+MLOPTIONS........ = (incl. LIBCNTRL, starts on next line)
+$(MLOPTIONS) $(LIBCNTRL) -----##----
+!ENDIF
+CPP_PCH.......... = $(CPP_PCH)
+CPPOPTS.......... = $(CPPOPTS)
+CPPDEPS.......... = $(SPPDEPS)
+DEFFILE.......... = $(DEFFILE)
+EEXEOBJ.......... = $(EEXEOBJ)
+H_FILES.......... = $(H_FILES)
+LINKTARGET....... = $(LINKTARGET)
+MAKEFILE......... = $(MAKEFILE)
+MLOPTS........... = $(MLOPTS)
+MLOPTFLAGS....... = $(MLOPTFLAGS)
+OPTFLAGS......... = $(OPTFLAGS)
+PCHINCROOT....... = $(PCHINCROOT)
+PCHINCFILE....... = $(PCHINCFILE)
+PCHSOURCEFILE.... = $(PCHSOURCEFILE)
+PCHFILE.......... = $(PCHFILE)
+PCHOBJFILE....... = $(PCHOBJFILE)
+PCHOPTS.......... = $(PCHOPTS)
+PCHOPTSC......... = $(PCHOTPSC)
+EXEFILE.......... = $(EXEFILE)
+EXEFILESLIST..... = (starts on next line)
+$(EXEFILESLIST)
+EXESUPLIBSLIST... = (starts on next line)
+$(EXESUPLIBSLIST)
+SRCFILES......... = (starts on next line)
+$(SRCFILES)
+SUPLIBSSRC....... = (starts on next line)
+$(SUPLIBSSRC)
+SUPLIBSLIST...... = (starts on next line)
+$(SUPLIBSLIST)
+OBJ.............. = (starts on next line)
+$(OBJ)
+OBJ2............. = (starts on next line)
+$(OBJ2)
+----------------------------------------------------------------------
+EXEFILESLIST = $(OBJDIR)\$$(EXEFILESLIST: = $(OBJDIR)\)
+OBJ = $(OBJDIR)\$$(OBJ: = $(OBJDIR)\)
+!IF "$(EXESUPLIBSLIST)" != ""
+EXESUPLIBSLIST = $(OBJDIR)\$$(EXESUPLIBSLIST: = $(OBJDIR)\)
+!ENDIF
+----------------------------------------------------------------------
+<<
+
+status:
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) filelistxform
+ nmake /nologo /f nmake.mak EXEFILE=$(EXEFILE) EXETYPE=$(EXETYPE) EXEBASE=$(EXEBASE) LIBBASE=$(LIBBASE) DLLBASE=$(DLLBASE) status.core
+ nmake /nologo /f nmake.mak filelistxform.kill
+
+force: clean all
diff --git a/xc/extras/Mesa/WIN32/RES/Mesa32.rc b/xc/extras/Mesa/WIN32/RES/Mesa32.rc
new file mode 100644
index 000000000..8e0a6fa29
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/Mesa32.rc
@@ -0,0 +1,32 @@
+#include <windows.h>
+
+#define IDR_VERSION1 1
+IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+ FILEFLAGS 0
+ FILEOS VOS_DOS_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0 // not used
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ //language ID = U.S. English, char set = Windows, Multilingual
+
+ BEGIN
+ VALUE "FileDescription", "mesa32 3D Graphics Library\0"
+ VALUE "FileVersion", "3.1\0"
+ VALUE "InternalName", "MESAGL32\0"
+ VALUE "OriginalFilename", "OPENGL32.DLL\0"
+ VALUE "ProductName", "OPENGL32.DLL\0"
+ VALUE "Comments", "Thanks to Brian Paul for making this possible\r\n\0"
+ VALUE "LegalCopyright", "Copyright (C) 1995-1997 Brian Paul\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 1252
+ END
+END
diff --git a/xc/extras/Mesa/WIN32/RES/fxMesa32.def b/xc/extras/Mesa/WIN32/RES/fxMesa32.def
new file mode 100644
index 000000000..f64b5d285
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/fxMesa32.def
@@ -0,0 +1,473 @@
+DESCRIPTION '"""Mesa 3D graphics library for Win32 Glide 2x"""'
+
+VERSION 3.1
+
+HEAPSIZE 1048576,4096
+
+EXPORTS
+ glAccum
+ glAlphaFunc
+ glAreTexturesResident
+ glArrayElement
+ glBegin
+ glBindTexture
+ glBitmap
+ glBlendFunc
+ glCallList
+ glCallLists
+ glClear
+ glClearAccum
+ glClearIndex
+ glClearColor
+ glClearDepth
+ glClearStencil
+ glClipPlane
+ glColor3b
+ glColor3d
+ glColor3f
+ glColor3i
+ glColor3s
+ glColor3ub
+ glColor3ui
+ glColor3us
+ glColor4b
+ glColor4d
+ glColor4f
+ glColor4i
+ glColor4s
+ glColor4ub
+ glColor4ui
+ glColor4us
+ glColor3bv
+ glColor3dv
+ glColor3fv
+ glColor3iv
+ glColor3sv
+ glColor3ubv
+ glColor3uiv
+ glColor3usv
+ glColor4bv
+ glColor4dv
+ glColor4fv
+ glColor4iv
+ glColor4sv
+ glColor4ubv
+ glColor4uiv
+ glColor4usv
+ glColorMask
+ glColorMaterial
+ glColorPointer
+ glColorTableEXT
+ glColorSubTableEXT
+ glCopyPixels
+ glCopyTexImage1D
+ glCopyTexImage2D
+ glCopyTexSubImage1D
+ glCopyTexSubImage2D
+ glCullFace
+ glDepthFunc
+ glDepthMask
+ glDepthRange
+ glDeleteLists
+ glDeleteTextures
+ glDisable
+ glDisableClientState
+ glDrawArrays
+ glDrawBuffer
+ glDrawElements
+ glDrawPixels
+ glEnable
+ glEnableClientState
+ glEnd
+ glEndList
+ glEvalCoord1d
+ glEvalCoord1f
+ glEvalCoord1dv
+ glEvalCoord1fv
+ glEvalCoord2d
+ glEvalCoord2f
+ glEvalCoord2dv
+ glEvalCoord2fv
+ glEvalPoint1
+ glEvalPoint2
+ glEvalMesh1
+ glEdgeFlag
+ glEdgeFlagv
+ glEdgeFlagPointer
+ glEvalMesh2
+ glFeedbackBuffer
+ glFinish
+ glFlush
+ glFogf
+ glFogi
+ glFogfv
+ glFogiv
+ glFrontFace
+ glFrustum
+ glGenLists
+ glGenTextures
+ glGetBooleanv
+ glGetClipPlane
+ glGetColorTableEXT
+ glGetColorTableParameterivEXT
+ glGetColorTableParameterfvEXT
+ glGetDoublev
+ glGetError
+ glGetFloatv
+ glGetIntegerv
+ glGetLightfv
+ glGetLightiv
+ glGetMapdv
+ glGetMapfv
+ glGetMapiv
+ glGetMaterialfv
+ glGetMaterialiv
+ glGetPixelMapfv
+ glGetPixelMapuiv
+ glGetPixelMapusv
+ glGetPointerv
+ glGetPolygonStipple
+ glGetString
+ glGetTexEnvfv
+ glGetTexEnviv
+ glGetTexGeniv
+ glGetTexGendv
+ glGetTexGenfv
+ glGetTexImage
+ glGetTexLevelParameterfv
+ glGetTexLevelParameteriv
+ glGetTexParameterfv
+ glGetTexParameteriv
+ glHint
+ glIndexd
+ glIndexf
+ glIndexi
+ glIndexs
+ glIndexub
+ glIndexdv
+ glIndexfv
+ glIndexiv
+ glIndexsv
+ glIndexubv
+ glIndexMask
+ glIndexPointer
+ glInterleavedArrays
+ glInitNames
+ glIsList
+ glIsTexture
+ glLightf
+ glLighti
+ glLightfv
+ glLightiv
+ glLightModelf
+ glLightModeli
+ glLightModelfv
+ glLightModeliv
+ glLineWidth
+ glLineStipple
+ glListBase
+ glLoadIdentity
+ glLoadMatrixd
+ glLoadMatrixf
+ glLoadName
+ glLogicOp
+ glMap1d
+ glMap1f
+ glMap2d
+ glMap2f
+ glMapGrid1d
+ glMapGrid1f
+ glMapGrid2d
+ glMapGrid2f
+ glMaterialf
+ glMateriali
+ glMaterialfv
+ glMaterialiv
+ glMatrixMode
+ glMultMatrixd
+ glMultMatrixf
+ glNewList
+ glNormal3b
+ glNormal3d
+ glNormal3f
+ glNormal3i
+ glNormal3s
+ glNormal3bv
+ glNormal3dv
+ glNormal3fv
+ glNormal3iv
+ glNormal3sv
+ glNormalPointer
+ glOrtho
+ glPassThrough
+ glPixelMapfv
+ glPixelMapuiv
+ glPixelMapusv
+ glPixelStoref
+ glPixelStorei
+ glPixelTransferf
+ glPixelTransferi
+ glPixelZoom
+ glPointSize
+ glPolygonMode
+ glPolygonOffset
+ glPolygonOffsetEXT
+ glPolygonStipple
+ glPopAttrib
+ glPopClientAttrib
+ glPopMatrix
+ glPopName
+ glPrioritizeTextures
+ glPushMatrix
+ glRasterPos2d
+ glRasterPos2f
+ glRasterPos2i
+ glRasterPos2s
+ glRasterPos3d
+ glRasterPos3f
+ glRasterPos3i
+ glRasterPos3s
+ glRasterPos4d
+ glRasterPos4f
+ glRasterPos4i
+ glRasterPos4s
+ glRasterPos2dv
+ glRasterPos2fv
+ glRasterPos2iv
+ glRasterPos2sv
+ glRasterPos3dv
+ glRasterPos3fv
+ glRasterPos3iv
+ glRasterPos3sv
+ glRasterPos4dv
+ glRasterPos4fv
+ glRasterPos4iv
+ glRasterPos4sv
+ glReadBuffer
+ glReadPixels
+ glRectd
+ glRectf
+ glRecti
+ glRects
+ glRectdv
+ glRectfv
+ glRectiv
+ glRectsv
+ glScissor
+ glIsEnabled
+ glPushAttrib
+ glPushClientAttrib
+ glPushName
+ glRenderMode
+ glRotated
+ glRotatef
+ glSelectBuffer
+ glScaled
+ glScalef
+ glShadeModel
+ glStencilFunc
+ glStencilMask
+ glStencilOp
+ glTexCoord1d
+ glTexCoord1f
+ glTexCoord1i
+ glTexCoord1s
+ glTexCoord2d
+ glTexCoord2f
+ glTexCoord2i
+ glTexCoord2s
+ glTexCoord3d
+ glTexCoord3f
+ glTexCoord3i
+ glTexCoord3s
+ glTexCoord4d
+ glTexCoord4f
+ glTexCoord4i
+ glTexCoord4s
+ glTexCoord1dv
+ glTexCoord1fv
+ glTexCoord1iv
+ glTexCoord1sv
+ glTexCoord2dv
+ glTexCoord2fv
+ glTexCoord2iv
+ glTexCoord2sv
+ glTexCoord3dv
+ glTexCoord3fv
+ glTexCoord3iv
+ glTexCoord3sv
+ glTexCoord4dv
+ glTexCoord4fv
+ glTexCoord4iv
+ glTexCoord4sv
+ glTexCoordPointer
+ glTexGend
+ glTexGenf
+ glTexGeni
+ glTexGendv
+ glTexGeniv
+ glTexGenfv
+ glTexEnvf
+ glTexEnvi
+ glTexEnvfv
+ glTexEnviv
+ glTexImage1D
+ glTexImage2D
+ glTexParameterf
+ glTexParameteri
+ glTexParameterfv
+ glTexParameteriv
+ glTexSubImage1D
+ glTexSubImage2D
+ glTranslated
+ glTranslatef
+ glVertex2d
+ glVertex2f
+ glVertex2i
+ glVertex2s
+ glVertex3d
+ glVertex3f
+ glVertex3i
+ glVertex3s
+ glVertex4d
+ glVertex4f
+ glVertex4i
+ glVertex4s
+ glVertex2dv
+ glVertex2fv
+ glVertex2iv
+ glVertex2sv
+ glVertex3dv
+ glVertex3fv
+ glVertex3iv
+ glVertex3sv
+ glVertex4dv
+ glVertex4fv
+ glVertex4iv
+ glVertex4sv
+ glVertexPointer
+ glViewport
+ glBlendEquationEXT
+ glBlendColorEXT
+ glVertexPointerEXT
+ glNormalPointerEXT
+ glColorPointerEXT
+ glIndexPointerEXT
+ glTexCoordPointerEXT
+ glEdgeFlagPointerEXT
+ glGetPointervEXT
+ glArrayElementEXT
+ glDrawArraysEXT
+ glBindTextureEXT
+ glDeleteTexturesEXT
+ glGenTexturesEXT
+ glPrioritizeTexturesEXT
+ glCopyTexSubImage3DEXT
+ glTexImage3DEXT
+ glTexSubImage3DEXT
+ glWindowPos4fMESA
+ glWindowPos2iMESA
+ glWindowPos2sMESA
+ glWindowPos2fMESA
+ glWindowPos2dMESA
+ glWindowPos2ivMESA
+ glWindowPos2svMESA
+ glWindowPos2fvMESA
+ glWindowPos2dvMESA
+ glWindowPos3iMESA
+ glWindowPos3sMESA
+ glWindowPos3fMESA
+ glWindowPos3dMESA
+ glWindowPos3ivMESA
+ glWindowPos3svMESA
+ glWindowPos3fvMESA
+ glWindowPos3dvMESA
+ glWindowPos4iMESA
+ glWindowPos4sMESA
+ glWindowPos4dMESA
+ glWindowPos4ivMESA
+ glWindowPos4svMESA
+ glWindowPos4fvMESA
+ glWindowPos4dvMESA
+ glResizeBuffersMESA
+ wglCopyContext
+ wglCreateContext
+ wglCreateLayerContext
+ wglDeleteContext
+;wglDescribeLayerPlane
+ wglGetCurrentContext
+ wglGetCurrentDC
+;wglGetLayerPaletteEntries
+ wglGetProcAddress
+ wglMakeCurrent
+;wglRealizeLayerPalette
+;wglSetLayerPaletteEntries
+ wglShareLists
+ wglSwapLayerBuffers
+ wglUseFontBitmapsA
+ wglUseFontBitmapsW
+ wglUseFontOutlinesA
+ wglUseFontOutlinesW
+ wglChoosePixelFormat
+ ChoosePixelFormat
+ wglDescribePixelFormat
+ DescribePixelFormat
+ wglGetPixelFormat
+ GetPixelFormat
+ wglSetPixelFormat
+ SetPixelFormat
+ wglSwapBuffers
+ SwapBuffers
+ gl3DfxSetPaletteEXT
+ glActiveTextureARB
+ glClientActiveTextureARB
+ glMultiTexCoord1dARB
+ glMultiTexCoord1dvARB
+ glMultiTexCoord1fARB
+ glMultiTexCoord1fvARB
+ glMultiTexCoord1iARB
+ glMultiTexCoord1ivARB
+ glMultiTexCoord1sARB
+ glMultiTexCoord1svARB
+ glMultiTexCoord2dARB
+ glMultiTexCoord2dvARB
+ glMultiTexCoord2fARB
+ glMultiTexCoord2fvARB
+ glMultiTexCoord2iARB
+ glMultiTexCoord2ivARB
+ glMultiTexCoord2sARB
+ glMultiTexCoord2svARB
+ glMultiTexCoord3dARB
+ glMultiTexCoord3dvARB
+ glMultiTexCoord3fARB
+ glMultiTexCoord3fvARB
+ glMultiTexCoord3iARB
+ glMultiTexCoord3ivARB
+ glMultiTexCoord3sARB
+ glMultiTexCoord3svARB
+ glMultiTexCoord4dARB
+ glMultiTexCoord4dvARB
+ glMultiTexCoord4fARB
+ glMultiTexCoord4fvARB
+ glMultiTexCoord4iARB
+ glMultiTexCoord4ivARB
+ glMultiTexCoord4sARB
+ glMultiTexCoord4svARB
+ fxMesaCreateContext
+ fxMesaCreateBestContext
+ fxMesaDestroyContext
+ fxMesaSelectCurrentBoard
+ fxMesaMakeCurrent
+ fxMesaGetCurrentContext
+ fxMesaSwapBuffers
+ fxMesaSetNearFar
+ fxMesaUpdateScreenSize
+ fxQueryHardware
+ fxCloseHardware
+ OSMesaCreateContext
+ OSMesaDestroyContext
+ OSMesaGetCurrentContext
+ OSMesaGetDepthBuffer
+ OSMesaGetIntegerv
+ OSMesaMakeCurrent
+ OSMesaPixelStore
diff --git a/xc/extras/Mesa/WIN32/RES/fxMesa32.rc b/xc/extras/Mesa/WIN32/RES/fxMesa32.rc
new file mode 100644
index 000000000..9c3d49e1f
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/fxMesa32.rc
@@ -0,0 +1,32 @@
+#include <windows.h>
+
+#define IDR_VERSION1 1
+IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+ FILEFLAGS 0
+ FILEOS VOS_DOS_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0 // not used
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ //language ID = U.S. English, char set = Windows, Multilingual
+
+ BEGIN
+ VALUE "FileDescription", "fxmesa32 3D Graphics Library\0"
+ VALUE "FileVersion", "3.1\0"
+ VALUE "InternalName", "FXMESAGL32\0"
+ VALUE "OriginalFilename", "OPENGL32.DLL\0"
+ VALUE "ProductName", "OPENGL32.DLL\0"
+ VALUE "Comments", "Thanks to Brian Paul for making this possible\r\nRequires GLIDE2X.DLL.\0"
+ VALUE "LegalCopyright", "Copyright (C) 1995-1997 Brian Paul\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 1252
+ END
+END
diff --git a/xc/extras/Mesa/WIN32/RES/mesa32.def b/xc/extras/Mesa/WIN32/RES/mesa32.def
new file mode 100644
index 000000000..0dbe1c266
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/mesa32.def
@@ -0,0 +1,471 @@
+DESCRIPTION '"""Mesa 3D graphics library for Win32"""'
+
+VERSION 3.1
+
+HEAPSIZE 1048576,4096
+
+EXPORTS
+ glAccum
+ glAlphaFunc
+ glAreTexturesResident
+ glAreTexturesResidentEXT
+ glArrayElement
+ glArrayElementEXT
+ glBegin
+ glBindTexture
+ glBindTextureEXT
+ glBitmap
+ glBlendColorEXT
+ glBlendEquationEXT
+ glBlendFunc
+ glCallList
+ glCallLists
+ glClear
+ glClearAccum
+ glClearColor
+ glClearDepth
+ glClearIndex
+ glClearStencil
+ glClipPlane
+ glColor3b
+ glColor3bv
+ glColor3d
+ glColor3dv
+ glColor3f
+ glColor3fv
+ glColor3i
+ glColor3iv
+ glColor3s
+ glColor3sv
+ glColor3ub
+ glColor3ubv
+ glColor3ui
+ glColor3uiv
+ glColor3us
+ glColor3usv
+ glColor4b
+ glColor4bv
+ glColor4d
+ glColor4dv
+ glColor4f
+ glColor4fv
+ glColor4i
+ glColor4iv
+ glColor4s
+ glColor4sv
+ glColor4ub
+ glColor4ubv
+ glColor4ui
+ glColor4uiv
+ glColor4us
+ glColor4usv
+ glColorMask
+ glColorMaterial
+ glColorPointer
+ glColorPointerEXT
+ glColorSubTableEXT
+ glColorTableEXT
+ glCopyPixels
+ glCopyTexImage1D
+ glCopyTexImage2D
+ glCopyTexSubImage1D
+ glCopyTexSubImage2D
+ glCopyTexSubImage3D
+ glCopyTexSubImage3DEXT
+ glCullFace
+ glDeleteLists
+ glDeleteTextures
+ glDeleteTexturesEXT
+ glDepthFunc
+ glDepthMask
+ glDepthRange
+ glDisable
+ glDisableClientState
+ glDrawArrays
+ glDrawArraysEXT
+ glDrawBuffer
+ glDrawElements
+ glDrawPixels
+ glDrawRangeElements
+ glEdgeFlag
+ glEdgeFlagPointer
+ glEdgeFlagPointerEXT
+ glEdgeFlagv
+ glEnable
+ glEnableClientState
+ glEnd
+ glEndList
+ glEvalCoord1d
+ glEvalCoord1dv
+ glEvalCoord1f
+ glEvalCoord1fv
+ glEvalCoord2d
+ glEvalCoord2dv
+ glEvalCoord2f
+ glEvalCoord2fv
+ glEvalMesh1
+ glEvalMesh2
+ glEvalPoint1
+ glEvalPoint2
+ glFeedbackBuffer
+ glFinish
+ glFlush
+ glFogf
+ glFogfv
+ glFogi
+ glFogiv
+ glFrontFace
+ glFrustum
+ glGenLists
+ glGenTextures
+ glGenTexturesEXT
+ glGetBooleanv
+ glGetClipPlane
+ glGetColorTableEXT
+ glGetColorTableParameterfvEXT
+ glGetColorTableParameterivEXT
+ glGetDoublev
+ glGetError
+ glGetFloatv
+ glGetIntegerv
+ glGetLightfv
+ glGetLightiv
+ glGetMapdv
+ glGetMapfv
+ glGetMapiv
+ glGetMaterialfv
+ glGetMaterialiv
+ glGetPixelMapfv
+ glGetPixelMapuiv
+ glGetPixelMapusv
+ glGetPointerv
+ glGetPointervEXT
+ glGetPolygonStipple
+ glGetString
+ glGetTexEnvfv
+ glGetTexEnviv
+ glGetTexGendv
+ glGetTexGenfv
+ glGetTexGeniv
+ glGetTexImage
+ glGetTexLevelParameterfv
+ glGetTexLevelParameteriv
+ glGetTexParameterfv
+ glGetTexParameteriv
+ glHint
+ glIndexd
+ glIndexdv
+ glIndexf
+ glIndexfv
+ glIndexi
+ glIndexiv
+ glIndexMask
+ glIndexPointer
+ glIndexPointerEXT
+ glIndexs
+ glIndexsv
+ glIndexub
+ glIndexubv
+ glInitNames
+ glInterleavedArrays
+; glInterleavedTextureCoordSetsEX; removed in Mesa 3.1?
+ glIsEnabled
+ glIsList
+ glIsTexture
+ glIsTextureEXT
+ glLightf
+ glLightfv
+ glLighti
+ glLightiv
+ glLightModelf
+ glLightModelfv
+ glLightModeli
+ glLightModeliv
+ glLineStipple
+ glLineWidth
+ glListBase
+ glLoadIdentity
+ glLoadMatrixd
+ glLoadMatrixf
+ glLoadName
+ glLogicOp
+ glMap1d
+ glMap1f
+ glMap2d
+ glMap2f
+ glMapGrid1d
+ glMapGrid1f
+ glMapGrid2d
+ glMapGrid2f
+ glMaterialf
+ glMaterialfv
+ glMateriali
+ glMaterialiv
+ glMatrixMode
+; glMultiTexCoord1dEXT ; removed in Mesa 3.1?
+; glMultiTexCoord1dvEXT ; removed in Mesa 3.1?
+; glMultiTexCoord1fEXT ; removed in Mesa 3.1?
+; glMultiTexCoord1fvEXT ; removed in Mesa 3.1?
+; glMultiTexCoord1iEXT ; removed in Mesa 3.1?
+; glMultiTexCoord1ivEXT ; removed in Mesa 3.1?
+; glMultiTexCoord1sEXT ; removed in Mesa 3.1?
+; glMultiTexCoord1svEXT ; removed in Mesa 3.1?
+; glMultiTexCoord2dEXT ; removed in Mesa 3.1?
+; glMultiTexCoord2dvEXT ; removed in Mesa 3.1?
+; glMultiTexCoord2fEXT ; removed in Mesa 3.1?
+; glMultiTexCoord2fvEXT ; removed in Mesa 3.1?
+; glMultiTexCoord2iEXT ; removed in Mesa 3.1?
+; glMultiTexCoord2ivEXT ; removed in Mesa 3.1?
+; glMultiTexCoord2sEXT ; removed in Mesa 3.1?
+; glMultiTexCoord2svEXT ; removed in Mesa 3.1?
+; glMultiTexCoord3dEXT ; removed in Mesa 3.1?
+; glMultiTexCoord3dvEXT ; removed in Mesa 3.1?
+; glMultiTexCoord3fEXT ; removed in Mesa 3.1?
+; glMultiTexCoord3fvEXT ; removed in Mesa 3.1?
+; glMultiTexCoord3iEXT ; removed in Mesa 3.1?
+; glMultiTexCoord3ivEXT ; removed in Mesa 3.1?
+; glMultiTexCoord3sEXT ; removed in Mesa 3.1?
+; glMultiTexCoord3svEXT ; removed in Mesa 3.1?
+; glMultiTexCoord4dEXT ; removed in Mesa 3.1?
+; glMultiTexCoord4dvEXT ; removed in Mesa 3.1?
+; glMultiTexCoord4fEXT ; removed in Mesa 3.1?
+; glMultiTexCoord4fvEXT ; removed in Mesa 3.1?
+; glMultiTexCoord4iEXT ; removed in Mesa 3.1?
+; glMultiTexCoord4ivEXT ; removed in Mesa 3.1?
+; glMultiTexCoord4sEXT ; removed in Mesa 3.1?
+; glMultiTexCoord4svEXT ; removed in Mesa 3.1?
+ glMultMatrixd
+ glMultMatrixf
+ glNewList
+ glNormal3b
+ glNormal3bv
+ glNormal3d
+ glNormal3dv
+ glNormal3f
+ glNormal3fv
+ glNormal3i
+ glNormal3iv
+ glNormal3s
+ glNormal3sv
+ glNormalPointer
+ glNormalPointerEXT
+ glOrtho
+ glPassThrough
+ glPixelMapfv
+ glPixelMapuiv
+ glPixelMapusv
+ glPixelStoref
+ glPixelStorei
+ glPixelTransferf
+ glPixelTransferi
+ glPixelZoom
+ glPointParameterfEXT
+ glPointParameterfvEXT
+ glPointSize
+ glPolygonMode
+ glPolygonOffset
+ glPolygonOffsetEXT
+ glPolygonStipple
+ glPopAttrib
+ glPopClientAttrib
+ glPopMatrix
+ glPopName
+ glPrioritizeTextures
+ glPrioritizeTexturesEXT
+ glPushAttrib
+ glPushClientAttrib
+ glPushMatrix
+ glPushName
+ glRasterPos2d
+ glRasterPos2dv
+ glRasterPos2f
+ glRasterPos2fv
+ glRasterPos2i
+ glRasterPos2iv
+ glRasterPos2s
+ glRasterPos2sv
+ glRasterPos3d
+ glRasterPos3dv
+ glRasterPos3f
+ glRasterPos3fv
+ glRasterPos3i
+ glRasterPos3iv
+ glRasterPos3s
+ glRasterPos3sv
+ glRasterPos4d
+ glRasterPos4dv
+ glRasterPos4f
+ glRasterPos4fv
+ glRasterPos4i
+ glRasterPos4iv
+ glRasterPos4s
+ glRasterPos4sv
+ glReadBuffer
+ glReadPixels
+ glRectd
+ glRectdv
+ glRectf
+ glRectfv
+ glRecti
+ glRectiv
+ glRects
+ glRectsv
+ glRenderMode
+ glResizeBuffersMESA
+ glRotated
+ glRotatef
+ glScaled
+ glScalef
+ glScissor
+ glSelectBuffer
+; glSelectTextureCoordSetEXT ; removed in Mesa 3.1?
+; glSelectTextureEXT ; removed in Mesa 3.1?
+; glSelectTextureTransformEXT ; removed in Mesa 3.1?
+ glShadeModel
+ glStencilFunc
+ glStencilMask
+ glStencilOp
+ glTexCoord1d
+ glTexCoord1dv
+ glTexCoord1f
+ glTexCoord1fv
+ glTexCoord1i
+ glTexCoord1iv
+ glTexCoord1s
+ glTexCoord1sv
+ glTexCoord2d
+ glTexCoord2dv
+ glTexCoord2f
+ glTexCoord2fv
+ glTexCoord2i
+ glTexCoord2iv
+ glTexCoord2s
+ glTexCoord2sv
+ glTexCoord3d
+ glTexCoord3dv
+ glTexCoord3f
+ glTexCoord3fv
+ glTexCoord3i
+ glTexCoord3iv
+ glTexCoord3s
+ glTexCoord3sv
+ glTexCoord4d
+ glTexCoord4dv
+ glTexCoord4f
+ glTexCoord4fv
+ glTexCoord4i
+ glTexCoord4iv
+ glTexCoord4s
+ glTexCoord4sv
+ glTexCoordPointer
+ glTexCoordPointerEXT
+ glTexEnvf
+ glTexEnvfv
+ glTexEnvi
+ glTexEnviv
+ glTexGend
+ glTexGendv
+ glTexGenf
+ glTexGenfv
+ glTexGeni
+ glTexGeniv
+ glTexImage1D
+ glTexImage2D
+ glTexImage3D
+ glTexImage3DEXT
+ glTexParameterf
+ glTexParameterfv
+ glTexParameteri
+ glTexParameteriv
+ glTexSubImage1D
+ glTexSubImage2D
+ glTexSubImage3D
+ glTexSubImage3DEXT
+ glTranslated
+ glTranslatef
+ glVertex2d
+ glVertex2dv
+ glVertex2f
+ glVertex2fv
+ glVertex2i
+ glVertex2iv
+ glVertex2s
+ glVertex2sv
+ glVertex3d
+ glVertex3dv
+ glVertex3f
+ glVertex3fv
+ glVertex3i
+ glVertex3iv
+ glVertex3s
+ glVertex3sv
+ glVertex4d
+ glVertex4dv
+ glVertex4f
+ glVertex4fv
+ glVertex4i
+ glVertex4iv
+ glVertex4s
+ glVertex4sv
+ glVertexPointer
+ glVertexPointerEXT
+ glViewport
+ glWindowPos2dMESA
+ glWindowPos2dvMESA
+ glWindowPos2fMESA
+ glWindowPos2fvMESA
+ glWindowPos2iMESA
+ glWindowPos2ivMESA
+ glWindowPos2sMESA
+ glWindowPos2svMESA
+ glWindowPos3dMESA
+ glWindowPos3dvMESA
+ glWindowPos3fMESA
+ glWindowPos3fvMESA
+ glWindowPos3iMESA
+ glWindowPos3ivMESA
+ glWindowPos3sMESA
+ glWindowPos3svMESA
+ glWindowPos4dMESA
+ glWindowPos4dvMESA
+ glWindowPos4fMESA
+ glWindowPos4fvMESA
+ glWindowPos4iMESA
+ glWindowPos4ivMESA
+ glWindowPos4sMESA
+ glWindowPos4svMESA
+ OSMesaCreateContext
+ OSMesaDestroyContext
+ OSMesaGetCurrentContext
+ OSMesaGetDepthBuffer
+ OSMesaGetIntegerv
+ OSMesaMakeCurrent
+ OSMesaPixelStore
+ WMesaCreateContext
+ WMesaDestroyContext
+ WMesaMakeCurrent
+ WMesaPaletteChange
+ WMesaSwapBuffers
+ wglCopyContext
+ wglCreateContext
+ wglDeleteContext
+ wglCreateLayerContext
+ wglGetCurrentContext
+ wglGetCurrentDC
+ wglMakeCurrent
+ wglShareLists
+ wglUseFontBitmapsA
+ wglUseFontBitmapsW
+ wglUseFontOutlinesA
+ wglUseFontOutlinesW
+ wglDescribeLayerPlane
+ wglSetLayerPaletteEntries
+ wglGetLayerPaletteEntries
+ wglRealizeLayerPalette
+ wglSwapLayerBuffers
+ wglChoosePixelFormat
+ wglDescribePixelFormat
+ wglGetProcAddress
+ wglGetPixelFormat
+ wglSetPixelFormat
+ wglSwapBuffers
diff --git a/xc/extras/Mesa/WIN32/RES/mesaglu32.def b/xc/extras/Mesa/WIN32/RES/mesaglu32.def
new file mode 100644
index 000000000..c391c20d1
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/mesaglu32.def
@@ -0,0 +1,58 @@
+DESCRIPTION '"""Mesa 3D graphics library GLU Routines for Win32"""'
+
+VERSION 3.1
+
+HEAPSIZE 1048576,4096
+
+EXPORTS
+ gluLookAt
+ gluOrtho2D
+ gluPerspective
+ gluPickMatrix
+ gluProject
+ gluUnProject
+ gluErrorString
+ gluScaleImage
+ gluBuild1DMipmaps
+ gluBuild2DMipmaps
+ gluNewQuadric
+ gluDeleteQuadric
+ gluQuadricDrawStyle
+ gluQuadricOrientation
+ gluQuadricNormals
+ gluQuadricTexture
+ gluQuadricCallback
+ gluCylinder
+ gluSphere
+ gluDisk
+ gluPartialDisk
+ gluNewNurbsRenderer
+ gluDeleteNurbsRenderer
+ gluLoadSamplingMatrices
+ gluNurbsProperty
+ gluGetNurbsProperty
+ gluBeginCurve
+ gluEndCurve
+ gluNurbsCurve
+ gluBeginSurface
+ gluEndSurface
+ gluNurbsSurface
+ gluBeginTrim
+ gluEndTrim
+ gluPwlCurve
+ gluNurbsCallback
+ gluNewTess
+ gluDeleteTess
+; gluTessBeginPolygon
+; gluTessBeginContour
+ gluTessVertex
+; gluTessEndContour
+; gluTessEndPolygon
+; gluTessProperty
+; gluTessNormal
+ gluTessCallback
+; gluGetTessProperty
+ gluBeginPolygon
+ gluNextContour
+ gluEndPolygon
+ gluGetString
diff --git a/xc/extras/Mesa/WIN32/RES/mesaglu32.rc b/xc/extras/Mesa/WIN32/RES/mesaglu32.rc
new file mode 100644
index 000000000..92b3d5d7d
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/mesaglu32.rc
@@ -0,0 +1,32 @@
+#include <windows.h>
+
+#define IDR_VERSION1 1
+IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+ FILEFLAGS 0
+ FILEOS VOS_DOS_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0 // not used
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ //language ID = U.S. English, char set = Windows, Multilingual
+
+ BEGIN
+ VALUE "FileDescription", "mesaglu32 Graphics Library Utility\0"
+ VALUE "FileVersion", "3.1\0"
+ VALUE "InternalName", "MESAGLU32\0"
+ VALUE "OriginalFilename", "GLU32.DLL\0"
+ VALUE "ProductName", "GLU32.DLL\0"
+ VALUE "Comments", "Thanks to Brian Paul for making this possible\r\n\0"
+ VALUE "LegalCopyright", "Copyright (C) 1995-1997 Brian Paul\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 1252
+ END
+END
diff --git a/xc/extras/Mesa/WIN32/RES/mesaglut32.def b/xc/extras/Mesa/WIN32/RES/mesaglut32.def
new file mode 100644
index 000000000..db606a754
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/mesaglut32.def
@@ -0,0 +1,109 @@
+DESCRIPTION '"""Mesa 3D GLUT for Win32"""'
+
+VERSION 3,1,0,0
+
+HEAPSIZE 1048576,4096
+
+EXPORTS
+ glutInit
+ glutInitDisplayMode
+ glutInitDisplayString
+ glutInitWindowPosition
+ glutInitWindowSize
+ glutMainLoop
+ glutCreateWindow
+ glutCreateSubWindow
+ glutDestroyWindow
+ glutPostRedisplay
+ glutSwapBuffers
+ glutGetWindow
+ glutSetWindow
+ glutSetWindowTitle
+ glutSetIconTitle
+ glutPositionWindow
+ glutReshapeWindow
+ glutPopWindow
+ glutPushWindow
+ glutIconifyWindow
+ glutShowWindow
+ glutHideWindow
+ glutFullScreen
+ glutSetCursor
+ glutWarpPointer
+ glutEstablishOverlay
+ glutRemoveOverlay
+ glutUseLayer
+ glutPostOverlayRedisplay
+ glutShowOverlay
+ glutHideOverlay
+ glutCreateMenu
+ glutDestroyMenu
+ glutGetMenu
+ glutSetMenu
+ glutAddMenuEntry
+ glutAddSubMenu
+ glutChangeToMenuEntry
+ glutChangeToSubMenu
+ glutRemoveMenuItem
+ glutAttachMenu
+ glutDetachMenu
+ glutDisplayFunc
+ glutReshapeFunc
+ glutKeyboardFunc
+ glutMouseFunc
+ glutMotionFunc
+ glutPassiveMotionFunc
+ glutEntryFunc
+ glutVisibilityFunc
+ glutIdleFunc
+ glutTimerFunc
+ glutMenuStateFunc
+ glutSpecialFunc
+ glutSpaceballMotionFunc
+ glutSpaceballRotateFunc
+ glutSpaceballButtonFunc
+ glutButtonBoxFunc
+ glutDialsFunc
+ glutTabletMotionFunc
+ glutTabletButtonFunc
+ glutMenuStatusFunc
+ glutOverlayDisplayFunc
+ glutWindowStatusFunc
+ glutSetColor
+ glutGetColor
+ glutCopyColormap
+ glutGet
+ glutDeviceGet
+ glutExtensionSupported
+ glutGetModifiers
+ glutLayerGet
+ glutBitmapCharacter
+ glutBitmapWidth
+ glutStrokeCharacter
+ glutStrokeWidth
+ glutBitmapLength
+ glutStrokeLength
+ glutWireSphere
+ glutSolidSphere
+ glutWireCone
+ glutSolidCone
+ glutWireCube
+ glutSolidCube
+ glutWireTorus
+ glutSolidTorus
+ glutWireDodecahedron
+ glutSolidDodecahedron
+ glutWireTeapot
+ glutSolidTeapot
+ glutWireOctahedron
+ glutSolidOctahedron
+ glutWireTetrahedron
+ glutSolidTetrahedron
+ glutWireIcosahedron
+ glutSolidIcosahedron
+ glutVideoResizeGet
+ glutSetupVideoResizing
+ glutStopVideoResizing
+ glutVideoResize
+ glutVideoPan
+ glutReportErrors
diff --git a/xc/extras/Mesa/WIN32/RES/mesaglut32.rc b/xc/extras/Mesa/WIN32/RES/mesaglut32.rc
new file mode 100644
index 000000000..dbf1ed3fd
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/mesaglut32.rc
@@ -0,0 +1,32 @@
+#include <windows.h>
+
+#define IDR_VERSION1 1
+IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+ FILEFLAGS 0
+ FILEOS VOS_DOS_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0 // not used
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ //language ID = U.S. English, char set = Windows, Multilingual
+
+ BEGIN
+ VALUE "FileDescription", "mesaglut32 Graphics Library Utility Toolkit\0"
+ VALUE "FileVersion", "3.1\0"
+ VALUE "InternalName", "MESAGLUT32\0"
+ VALUE "OriginalFilename", "GLUT32.DLL\0"
+ VALUE "ProductName", "GLUT32.DLL\0"
+ VALUE "Comments", "Thanks to Mark Kilgard for making this possible\r\n\0"
+ VALUE "LegalCopyright", "Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 1252
+ END
+END
diff --git a/xc/extras/Mesa/WIN32/RES/s3Mesa32.def b/xc/extras/Mesa/WIN32/RES/s3Mesa32.def
new file mode 100644
index 000000000..5c092a027
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/s3Mesa32.def
@@ -0,0 +1,463 @@
+DESCRIPTION '"""Mesa 3D graphics library for Win32 S3TK"""'
+
+VERSION 3.1
+
+HEAPSIZE 1048576,4096
+
+EXPORTS
+ glAccum
+ glAlphaFunc
+ glAreTexturesResident
+ glArrayElement
+ glBegin
+ glBindTexture
+ glBitmap
+ glBlendFunc
+ glCallList
+ glCallLists
+ glClear
+ glClearAccum
+ glClearIndex
+ glClearColor
+ glClearDepth
+ glClearStencil
+ glClipPlane
+ glColor3b
+ glColor3d
+ glColor3f
+ glColor3i
+ glColor3s
+ glColor3ub
+ glColor3ui
+ glColor3us
+ glColor4b
+ glColor4d
+ glColor4f
+ glColor4i
+ glColor4s
+ glColor4ub
+ glColor4ui
+ glColor4us
+ glColor3bv
+ glColor3dv
+ glColor3fv
+ glColor3iv
+ glColor3sv
+ glColor3ubv
+ glColor3uiv
+ glColor3usv
+ glColor4bv
+ glColor4dv
+ glColor4fv
+ glColor4iv
+ glColor4sv
+ glColor4ubv
+ glColor4uiv
+ glColor4usv
+ glColorMask
+ glColorMaterial
+ glColorPointer
+ glColorTableEXT
+ glColorSubTableEXT
+ glCopyPixels
+ glCopyTexImage1D
+ glCopyTexImage2D
+ glCopyTexSubImage1D
+ glCopyTexSubImage2D
+ glCullFace
+ glDepthFunc
+ glDepthMask
+ glDepthRange
+ glDeleteLists
+ glDeleteTextures
+ glDisable
+ glDisableClientState
+ glDrawArrays
+ glDrawBuffer
+ glDrawElements
+ glDrawPixels
+ glEnable
+ glEnableClientState
+ glEnd
+ glEndList
+ glEvalCoord1d
+ glEvalCoord1f
+ glEvalCoord1dv
+ glEvalCoord1fv
+ glEvalCoord2d
+ glEvalCoord2f
+ glEvalCoord2dv
+ glEvalCoord2fv
+ glEvalPoint1
+ glEvalPoint2
+ glEvalMesh1
+ glEdgeFlag
+ glEdgeFlagv
+ glEdgeFlagPointer
+ glEvalMesh2
+ glFeedbackBuffer
+ glFinish
+ glFlush
+ glFogf
+ glFogi
+ glFogfv
+ glFogiv
+ glFrontFace
+ glFrustum
+ glGenLists
+ glGenTextures
+ glGetBooleanv
+ glGetClipPlane
+ glGetColorTableEXT
+ glGetColorTableParameterivEXT
+ glGetColorTableParameterfvEXT
+ glGetDoublev
+ glGetError
+ glGetFloatv
+ glGetIntegerv
+ glGetLightfv
+ glGetLightiv
+ glGetMapdv
+ glGetMapfv
+ glGetMapiv
+ glGetMaterialfv
+ glGetMaterialiv
+ glGetPixelMapfv
+ glGetPixelMapuiv
+ glGetPixelMapusv
+ glGetPointerv
+ glGetPolygonStipple
+ glGetString
+ glGetTexEnvfv
+ glGetTexEnviv
+ glGetTexGeniv
+ glGetTexGendv
+ glGetTexGenfv
+ glGetTexImage
+ glGetTexLevelParameterfv
+ glGetTexLevelParameteriv
+ glGetTexParameterfv
+ glGetTexParameteriv
+ glHint
+ glIndexd
+ glIndexf
+ glIndexi
+ glIndexs
+ glIndexub
+ glIndexdv
+ glIndexfv
+ glIndexiv
+ glIndexsv
+ glIndexubv
+ glIndexMask
+ glIndexPointer
+ glInterleavedArrays
+ glInitNames
+ glIsList
+ glIsTexture
+ glLightf
+ glLighti
+ glLightfv
+ glLightiv
+ glLightModelf
+ glLightModeli
+ glLightModelfv
+ glLightModeliv
+ glLineWidth
+ glLineStipple
+ glListBase
+ glLoadIdentity
+ glLoadMatrixd
+ glLoadMatrixf
+ glLoadName
+ glLogicOp
+ glMap1d
+ glMap1f
+ glMap2d
+ glMap2f
+ glMapGrid1d
+ glMapGrid1f
+ glMapGrid2d
+ glMapGrid2f
+ glMaterialf
+ glMateriali
+ glMaterialfv
+ glMaterialiv
+ glMatrixMode
+ glMultMatrixd
+ glMultMatrixf
+ glNewList
+ glNormal3b
+ glNormal3d
+ glNormal3f
+ glNormal3i
+ glNormal3s
+ glNormal3bv
+ glNormal3dv
+ glNormal3fv
+ glNormal3iv
+ glNormal3sv
+ glNormalPointer
+ glOrtho
+ glPassThrough
+ glPixelMapfv
+ glPixelMapuiv
+ glPixelMapusv
+ glPixelStoref
+ glPixelStorei
+ glPixelTransferf
+ glPixelTransferi
+ glPixelZoom
+ glPointSize
+ glPolygonMode
+ glPolygonOffset
+ glPolygonOffsetEXT
+ glPolygonStipple
+ glPopAttrib
+ glPopClientAttrib
+ glPopMatrix
+ glPopName
+ glPrioritizeTextures
+ glPushMatrix
+ glRasterPos2d
+ glRasterPos2f
+ glRasterPos2i
+ glRasterPos2s
+ glRasterPos3d
+ glRasterPos3f
+ glRasterPos3i
+ glRasterPos3s
+ glRasterPos4d
+ glRasterPos4f
+ glRasterPos4i
+ glRasterPos4s
+ glRasterPos2dv
+ glRasterPos2fv
+ glRasterPos2iv
+ glRasterPos2sv
+ glRasterPos3dv
+ glRasterPos3fv
+ glRasterPos3iv
+ glRasterPos3sv
+ glRasterPos4dv
+ glRasterPos4fv
+ glRasterPos4iv
+ glRasterPos4sv
+ glReadBuffer
+ glReadPixels
+ glRectd
+ glRectf
+ glRecti
+ glRects
+ glRectdv
+ glRectfv
+ glRectiv
+ glRectsv
+ glScissor
+ glIsEnabled
+ glPushAttrib
+ glPushClientAttrib
+ glPushName
+ glRenderMode
+ glRotated
+ glRotatef
+ glSelectBuffer
+ glScaled
+ glScalef
+ glShadeModel
+ glStencilFunc
+ glStencilMask
+ glStencilOp
+ glTexCoord1d
+ glTexCoord1f
+ glTexCoord1i
+ glTexCoord1s
+ glTexCoord2d
+ glTexCoord2f
+ glTexCoord2i
+ glTexCoord2s
+ glTexCoord3d
+ glTexCoord3f
+ glTexCoord3i
+ glTexCoord3s
+ glTexCoord4d
+ glTexCoord4f
+ glTexCoord4i
+ glTexCoord4s
+ glTexCoord1dv
+ glTexCoord1fv
+ glTexCoord1iv
+ glTexCoord1sv
+ glTexCoord2dv
+ glTexCoord2fv
+ glTexCoord2iv
+ glTexCoord2sv
+ glTexCoord3dv
+ glTexCoord3fv
+ glTexCoord3iv
+ glTexCoord3sv
+ glTexCoord4dv
+ glTexCoord4fv
+ glTexCoord4iv
+ glTexCoord4sv
+ glTexCoordPointer
+ glTexGend
+ glTexGenf
+ glTexGeni
+ glTexGendv
+ glTexGeniv
+ glTexGenfv
+ glTexEnvf
+ glTexEnvi
+ glTexEnvfv
+ glTexEnviv
+ glTexImage1D
+ glTexImage2D
+ glTexParameterf
+ glTexParameteri
+ glTexParameterfv
+ glTexParameteriv
+ glTexSubImage1D
+ glTexSubImage2D
+ glTranslated
+ glTranslatef
+ glVertex2d
+ glVertex2f
+ glVertex2i
+ glVertex2s
+ glVertex3d
+ glVertex3f
+ glVertex3i
+ glVertex3s
+ glVertex4d
+ glVertex4f
+ glVertex4i
+ glVertex4s
+ glVertex2dv
+ glVertex2fv
+ glVertex2iv
+ glVertex2sv
+ glVertex3dv
+ glVertex3fv
+ glVertex3iv
+ glVertex3sv
+ glVertex4dv
+ glVertex4fv
+ glVertex4iv
+ glVertex4sv
+ glVertexPointer
+ glViewport
+ glBlendEquationEXT
+ glBlendColorEXT
+ glVertexPointerEXT
+ glNormalPointerEXT
+ glColorPointerEXT
+ glIndexPointerEXT
+ glTexCoordPointerEXT
+ glEdgeFlagPointerEXT
+ glGetPointervEXT
+ glArrayElementEXT
+ glDrawArraysEXT
+ glBindTextureEXT
+ glDeleteTexturesEXT
+ glGenTexturesEXT
+ glPrioritizeTexturesEXT
+ glCopyTexSubImage3DEXT
+ glTexImage3DEXT
+ glTexSubImage3DEXT
+ glWindowPos4fMESA
+ glWindowPos2iMESA
+ glWindowPos2sMESA
+ glWindowPos2fMESA
+ glWindowPos2dMESA
+ glWindowPos2ivMESA
+ glWindowPos2svMESA
+ glWindowPos2fvMESA
+ glWindowPos2dvMESA
+ glWindowPos3iMESA
+ glWindowPos3sMESA
+ glWindowPos3fMESA
+ glWindowPos3dMESA
+ glWindowPos3ivMESA
+ glWindowPos3svMESA
+ glWindowPos3fvMESA
+ glWindowPos3dvMESA
+ glWindowPos4iMESA
+ glWindowPos4sMESA
+ glWindowPos4dMESA
+ glWindowPos4ivMESA
+ glWindowPos4svMESA
+ glWindowPos4fvMESA
+ glWindowPos4dvMESA
+ glResizeBuffersMESA
+ wglCopyContext
+ wglCreateContext
+ wglCreateLayerContext
+ wglDeleteContext
+;wglDescribeLayerPlane
+ wglGetCurrentContext
+ wglGetCurrentDC
+;wglGetLayerPaletteEntries
+ wglGetProcAddress
+ wglMakeCurrent
+;wglRealizeLayerPalette
+;wglSetLayerPaletteEntries
+ wglShareLists
+ wglSwapLayerBuffers
+ wglUseFontBitmapsA
+ wglUseFontBitmapsW
+ wglUseFontOutlinesA
+ wglUseFontOutlinesW
+ wglChoosePixelFormat
+ ChoosePixelFormat
+ wglDescribePixelFormat
+ DescribePixelFormat
+ wglGetPixelFormat
+ GetPixelFormat
+ wglSetPixelFormat
+ SetPixelFormat
+ wglSwapBuffers
+ SwapBuffers
+ gl3DfxSetPaletteEXT
+ glMultiTexCoord1dSGIS
+ glMultiTexCoord1dvSGIS
+ glMultiTexCoord1fSGIS
+ glMultiTexCoord1fvSGIS
+ glMultiTexCoord1iSGIS
+ glMultiTexCoord1ivSGIS
+ glMultiTexCoord1sSGIS
+ glMultiTexCoord1svSGIS
+ glMultiTexCoord2dSGIS
+ glMultiTexCoord2dvSGIS
+ glMultiTexCoord2fSGIS
+ glMultiTexCoord2fvSGIS
+ glMultiTexCoord2iSGIS
+ glMultiTexCoord2ivSGIS
+ glMultiTexCoord2sSGIS
+ glMultiTexCoord2svSGIS
+ glMultiTexCoord3dSGIS
+ glMultiTexCoord3dvSGIS
+ glMultiTexCoord3fSGIS
+ glMultiTexCoord3fvSGIS
+ glMultiTexCoord3iSGIS
+ glMultiTexCoord3ivSGIS
+ glMultiTexCoord3sSGIS
+ glMultiTexCoord3svSGIS
+ glMultiTexCoord4dSGIS
+ glMultiTexCoord4dvSGIS
+ glMultiTexCoord4fSGIS
+ glMultiTexCoord4fvSGIS
+ glMultiTexCoord4iSGIS
+ glMultiTexCoord4ivSGIS
+ glMultiTexCoord4sSGIS
+ glMultiTexCoord4svSGIS
+ glMultiTexCoordPointerSGIS
+ glSelectTextureSGIS
+ glSelectTextureCoordSetSGIS
+ OSMesaCreateContext
+ OSMesaDestroyContext
+ OSMesaGetCurrentContext
+ OSMesaGetDepthBuffer
+ OSMesaGetIntegerv
+ OSMesaMakeCurrent
+ OSMesaPixelStore
diff --git a/xc/extras/Mesa/WIN32/RES/s3Mesa32.rc b/xc/extras/Mesa/WIN32/RES/s3Mesa32.rc
new file mode 100644
index 000000000..4b4c686c9
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RES/s3Mesa32.rc
@@ -0,0 +1,32 @@
+#include <windows.h>
+
+#define IDR_VERSION1 1
+IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+ FILEFLAGS 0
+ FILEOS VOS_DOS_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0 // not used
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ //language ID = U.S. English, char set = Windows, Multilingual
+
+ BEGIN
+ VALUE "FileDescription", "s3MesaGL32 3D Graphics Library\0"
+ VALUE "FileVersion", "3.1\0"
+ VALUE "InternalName", "S3MESAGL32\0"
+ VALUE "OriginalFilename", "S3MESAGL32.DLL\0"
+ VALUE "ProductName", "S3MESAGL32.DLL\0"
+ VALUE "Comments", "Thanks to Brian Paul for making this possible\r\nRequires S3TK.DLL for S3/Virge.\0"
+ VALUE "LegalCopyright", "Copyright (C) 1995-1997 Brian Paul\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 1252
+ END
+END
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.fxmesa b/xc/extras/Mesa/WIN32/RULES/lib.fxmesa
new file mode 100644
index 000000000..21e09e84b
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.fxmesa
@@ -0,0 +1,40 @@
+
+!IF "$(STATIC_MESA)" == "0"
+!ERROR lib.$(LIBBASE) : This file require STATIC_MESA be set to 1.
+!ENDIF
+
+!IF "$(GLIDE2SDK)" == ""
+!ERROR lib.$(LIBBASE) : 'GLIDE2SDK' environment var not set, can't find Glide SDK
+!ENDIF
+
+LIBCOMMENTS=Requires Glide 2.x Runtime for 3Dfx Voodoo Graphics, Voodoo Rush, or Voodoo2.
+
+!INCLUDE .\rules\lib.mesa.core
+
+USE_CRTDLL=0
+STATIC_MESA=1
+
+SRCALT2 = .\$(MESAROOT)\src\FX
+SRCALT3 = .\$(MESAROOT)\src\OSmesa
+
+CPPOPTS = $(CPPOPTS) /DFX /DFX_V2 /DMESA_FX_DDRAW /DFX_SILENT /I$(GLIDE2SDK)\src\include
+EXELIBS = $(GLIDE2SDK)\src\lib\win32\glide2x.lib
+
+SRCFILES = $(MESA_CORE)\
+ fxapi.c fxcva.c fxdd.c fxddspan.c fxddtex.c fxrender.c fxsetup.c fxspan.c fxtexman.c\
+ fxtrifuncs.c fxvsetup.c fxwgl.c\
+ OSmesa.c
+
+!IF "$(NASM)" != ""
+
+SRCALT4 = .\$(MESAROOT)\src\X86
+
+SRCFILES = $(SRCFILES) x86.c x86a.S common_x86.c common_x86asm.S mmx_blend.S 3dnow.c 3dnow_norm_raw.S\
+ 3dnow_xform_masked1.S 3dnow_xform_masked2.S 3dnow_xform_masked3.S 3dnow_xform_masked4.S\
+ 3dnow_xform_raw1.S 3dnow_xform_raw2.S 3dnow_xform_raw3.S 3dnow_xform_raw4.S\
+
+!ENDIF
+
+OBJDIR_R = $(MESAROOT)\lib\FX
+
+# derecated ? -- fxpoints.c \ No newline at end of file
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.fxmesa32 b/xc/extras/Mesa/WIN32/RULES/lib.fxmesa32
new file mode 100644
index 000000000..2fc97c0a2
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.fxmesa32
@@ -0,0 +1,41 @@
+
+!IF "$(STATIC_MESA)" == "1"
+!ERROR lib.$(LIBBASE) : This file require STATIC_MESA be set to 0.
+!ENDIF
+
+!IF "$(GLIDE2SDK)" == ""
+!ERROR lib.$(LIBBASE) : 'GLIDE2SDK' environment var not set, can't find Glide SDK
+!ENDIF
+
+LIBCOMMENTS=Requires Glide 2.x Runtime for 3Dfx Voodoo Graphics, Voodoo Rush, or Voodoo2.
+
+!INCLUDE .\rules\lib.mesa.core
+
+USE_CRTDLL=1
+
+SRCALT2 = .\$(MESAROOT)\src\FX
+SRCALT3 = .\$(MESAROOT)\src\OSmesa
+
+DEFFILE = res\fxmesa32.def
+RCFILE = res\fxmesa32.rc
+
+CPPOPTS = $(CPPOPTS) /DFX /DFX_V2 /DFX_SILENT /DMESA_FX_DDRAW /DBUILD_GL32 /I$(GLIDE2SDK)\src\include
+
+SRCFILES = $(MESA_CORE)\
+ fxapi.c fxclip.c fxcva.c fxdd.c fxddspan.c fxddtex.c fxfastpath.c fxpipeline.c\
+ fxrender.c fxsetup.c fxtexman.c fxtrifuncs.c fxvsetup.c fxwgl.c fxglidew.c\
+ OSmesa.c
+
+!IF "$(NASM)" != ""
+
+SRCALT4 = .\$(MESAROOT)\src\X86
+
+SRCFILES = $(SRCFILES) x86.c x86a.S common_x86.c common_x86asm.S mmx_blend.S 3dnow.c 3dnow_norm_raw.S\
+ 3dnow_xform_masked1.S 3dnow_xform_masked2.S 3dnow_xform_masked3.S 3dnow_xform_masked4.S\
+ 3dnow_xform_raw1.S 3dnow_xform_raw2.S 3dnow_xform_raw3.S 3dnow_xform_raw4.S\
+
+!ENDIF
+
+DLLLIBS = $(GLIDE2SDK)\src\lib\win32\glide2x.lib ole32.lib dxguid.lib
+DLLBASE = OpenGL32
+OBJDIR_R = $(MESAROOT)\lib\FX
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.glu32 b/xc/extras/Mesa/WIN32/RULES/lib.glu32
new file mode 100644
index 000000000..5d008c0a8
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.glu32
@@ -0,0 +1,20 @@
+
+!IF "$(STATIC_MESA)" == "1"
+!ERROR lib.$(LIBBASE) : This file require STATIC_MESA be set to 0.
+!ENDIF
+
+!INCLUDE .\rules\lib.mesaglu.core
+
+USE_CRTDLL=1
+
+DEFFILE = res\mesaglu32.def
+RCFILE = res\mesaglu32.rc
+
+!IF "$(DEBUG)" == "1"
+DLLLIBS = OpenGL32d.lib
+!ELSE
+DLLLIBS = OpenGL32.lib
+!ENDIF
+
+CPPOPTS = $(CPPOPTS) /DBUILD_GLU32
+DLLBASE = GLU32
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.glut32 b/xc/extras/Mesa/WIN32/RULES/lib.glut32
new file mode 100644
index 000000000..bf0edbdf7
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.glut32
@@ -0,0 +1,20 @@
+
+!IF "$(STATIC_MESA)" == "1"
+!ERROR lib.$(LIBBASE) : This file require STATIC_MESA be set to 0.
+!ENDIF
+
+!INCLUDE .\rules\lib.mesaglut.core
+
+USE_CRTDLL=1
+
+DEFFILE = res\mesaglut32.def
+RCFILE = res\mesaglut32.rc
+
+!IF "$(DEBUG)" == "1"
+DLLLIBS = GLU32d.lib OpenGL32d.lib winmm.lib
+!ELSE
+DLLLIBS = GLU32.lib OpenGL32.lib winmm.lib
+!ENDIF
+
+CPPOPTS = $(CPPOPTS) /DBUILD_GLUT32
+DLLBASE = GLUT32
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.mesa b/xc/extras/Mesa/WIN32/RULES/lib.mesa
new file mode 100644
index 000000000..e9139cc3a
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.mesa
@@ -0,0 +1,9 @@
+
+!INCLUDE .\rules\lib.mesa.core
+
+USE_CRTDLL=0
+
+SRCALT2=.\$(MESAROOT)\src\OSmesa
+SRCALT3=.\$(MESAROOT)\src\Windows
+
+SRCFILES = $(MESA_CORE) OSmesa.c Wmesa.c wgl.c
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.mesa.core b/xc/extras/Mesa/WIN32/RULES/lib.mesa.core
new file mode 100644
index 000000000..9d6ffb359
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.mesa.core
@@ -0,0 +1,17 @@
+
+SRCALT1=.\$(MESAROOT)\src
+
+CPPOPTS=$(CPPOPTS) /I$(MESAROOT)\src
+
+MESA_CORE = aatriangle.c hash.c pixeltex.c texture.c\
+ accum.c debug_xform.c highpc.c points.c texutil.c alpha.c depth.c\
+ hint.c polygon.c translate.c alphabuf.c dispatch.c image.c quads.c\
+ triangle.c attrib.c dlist.c imaging.c rastpos.c varray.c bbox.c\
+ drawpix.c light.c readpix.c vb.c bitmap.c enable.c lines.c rect.c\
+ vbcull.c blend.c enums.c logic.c scissor.c vbfill.c buffers.c\
+ eval.c lowpc.c shade.c vbindirect.c clip.c extensions.c masking.c\
+ span.c vbrender.c colortab.c feedback.c matrix.c stages.c vbxform.c\
+ config.c fog.c mem.c state.c vector.c context.c get.c mmath.c\
+ stencil.c vertices.c convolve.c glapi.c pb.c teximage.c winpos.c\
+ copypix.c glapinoop.c pipeline.c texobj.c xform.c cva.c glthread.c\
+ pixel.c texstate.c zoom.c
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.mesa32 b/xc/extras/Mesa/WIN32/RULES/lib.mesa32
new file mode 100644
index 000000000..ccb49a7fe
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.mesa32
@@ -0,0 +1,24 @@
+
+!IF "$(STATIC_MESA)" == "1"
+!ERROR lib.$(LIBBASE) : This file require STATIC_MESA be set to 0.
+!ENDIF
+
+LIBCOMMENTS=CPU-based Rendering usable as a direct replacement for system OpenGL32.DLL
+
+!INCLUDE .\rules\lib.mesa.core
+
+USE_CRTDLL=1
+
+SRCALT2=.\$(MESAROOT)\src\Windows
+SRCALT3=.\$(MESAROOT)\src\OSmesa
+
+DEFFILE = res\mesa32.def
+RCFILE = res\mesa32.rc
+
+CPPOPTS = $(CPPOPTS) /DBUILD_GL32
+
+SRCFILES = $(MESA_CORE)\
+ Wmesa.c wgl.c\
+ OSmesa.c
+
+DLLBASE = OpenGL32
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.mesaglu b/xc/extras/Mesa/WIN32/RULES/lib.mesaglu
new file mode 100644
index 000000000..bd7443002
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.mesaglu
@@ -0,0 +1,4 @@
+
+!INCLUDE .\rules\lib.mesaglu.core
+
+USE_CRTDLL=0
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.mesaglu.core b/xc/extras/Mesa/WIN32/RULES/lib.mesaglu.core
new file mode 100644
index 000000000..7ec3f38fd
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.mesaglu.core
@@ -0,0 +1,5 @@
+
+SRCALT1=.\$(MESAROOT)\src-glu
+
+SRCFILES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c\
+ project.c quadric.c polytest.c tess.c tesselat.c
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.mesaglut b/xc/extras/Mesa/WIN32/RULES/lib.mesaglut
new file mode 100644
index 000000000..08c370b2c
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.mesaglut
@@ -0,0 +1,10 @@
+
+!IF "$(STATIC_MESA)" != "1"
+!ERROR lib.$(LIBBASE) : This file require STATIC_MESA be set to 1.
+!ENDIF
+
+!INCLUDE .\rules\lib.mesaglut.core
+
+USE_CRTDLL=0
+
+CPPOPTS = /DW32_MESA $(CPPOPTS)
diff --git a/xc/extras/Mesa/WIN32/RULES/lib.mesaglut.core b/xc/extras/Mesa/WIN32/RULES/lib.mesaglut.core
new file mode 100644
index 000000000..f2d87e702
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/lib.mesaglut.core
@@ -0,0 +1,19 @@
+
+SRCALT1=.\$(MESAROOT)\src-glut
+
+SRCFILES = glut_8x13.c glut_9x15.c glut_bitmap.c glut_bwidth.c\
+ glut_cindex.c glut_cmap.c glut_cursor.c glut_dials.c glut_dstr.c\
+ glut_event.c glut_ext.c glut_fullscrn.c glut_gamemode.c glut_get.c\
+ glut_hel10.c glut_hel12.c glut_hel18.c glut_init.c glut_input.c\
+ glut_key.c glut_mesa.c glut_modifier.c glut_mroman.c glut_overlay.c\
+ glut_roman.c glut_shapes.c glut_space.c glut_stroke.c glut_swap.c\
+ glut_swidth.c glut_tablet.c glut_teapot.c glut_tr10.c glut_tr24.c\
+ glut_util.c glut_vidresize.c glut_warp.c glut_win.c glut_winmisc.c\
+ win32_glx.c win32_menu.c win32_util.c win32_winproc.c win32_x11.c
+
+!IF "$(USE_SYSGL)" != "0"
+CPPDEPS=include\GL\glut.h
+CPPOPTS=$(CPPOPTS) /I.\include
+!ELSE
+CPPOPTS=$(CPPOPTS) /I$(MESAROOT)\include
+!ENDIF
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos
new file mode 100644
index 000000000..62ec5d85d
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos
@@ -0,0 +1,25 @@
+
+!IF "$(STATIC_MESA)" == "1"
+EXELIBS = mesaglut$(LIBSFX).lib mesaglu$(LIBSFX).lib $(MESAROOT)\lib\FX\fxmesagl$(LIBSFX).lib $(GLIDE2SDK)\src\lib\win32\glide2x.lib
+USE_CRTDLL = 0
+FORCELINK = 1
+!IF "$(GLIDE2SDK)" == ""
+!ERROR lib.$(LIBBASE) : 'GLIDE2SDK' environment var not set, can't find Glide SDK
+!ENDIF
+!ELSE
+EXELIBS = GLUT32$(LIBSFX).LIB GLU32$(LIBSFX).LIB $(MESAROOT)\lib\FX\OPENGL32$(LIBSFX).LIB
+RUNTIMELIBS = GLUT32$(LIBSFX).DLL GLU32$(LIBSFX).DLL FX\OPENGL32$(LIBSFX).DLL
+!ENDIF
+
+!IF ("$(USE_SYSGL)" == "0") && ("$(DEBUG)" == "1")
+EXELIBS=$(EXELIBS:.lib=d.lib)
+!IF "$(RUNTIMELIBS)" != ""
+RUNTIMELIBS=$(RUNTIMELIBS:.dll=d.dll)
+!ENDIF
+!ENDIF
+
+SRCALT1 = .\$(MESAROOT)\3dfx\demos
+EXELIBS = $(EXELIBS) winmm.lib
+CPPOPTS = /DFX /DFX_SILENT $(CPPOPTS)
+SUPLIBSROOT = .\rules\progs.3dfx.demos
+SRCFILES = fire.c glbpaltx.c gltest.c ipers.c mesaland.c paltex.c ray.c teapot.c tunnel.c
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.fire b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.fire
new file mode 100644
index 000000000..e4486a644
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.fire
@@ -0,0 +1 @@
+SRCFILESX = image.c
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.ipers b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.ipers
new file mode 100644
index 000000000..e4486a644
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.ipers
@@ -0,0 +1 @@
+SRCFILESX = image.c
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.rain b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.rain
new file mode 100644
index 000000000..8625a746b
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.rain
@@ -0,0 +1 @@
+SRCFILESX = particles.cxx image.c
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.teapot b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.teapot
new file mode 100644
index 000000000..b18a43442
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.teapot
@@ -0,0 +1 @@
+SRCFILESX = image.c dteapot.c shadow.c
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.tunnel b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.tunnel
new file mode 100644
index 000000000..cb9999c02
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.tunnel
@@ -0,0 +1 @@
+SRCFILESX = image.c sources.c
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.tunnel2 b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.tunnel2
new file mode 100644
index 000000000..cb9999c02
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.3dfx.demos.tunnel2
@@ -0,0 +1 @@
+SRCFILESX = image.c sources.c
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.book b/xc/extras/Mesa/WIN32/RULES/progs.book
new file mode 100644
index 000000000..5295fa297
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.book
@@ -0,0 +1,38 @@
+
+!IF "$(STATIC_MESA)" == "1"
+EXELIBS = mesaglut$(LIBSFX).lib mesaglu$(LIBSFX).lib mesagl$(LIBSFX).lib
+USE_CRTDLL = 0
+!ELSEIF "$(USE_SYSGL)" == "2"
+EXELIBS = glut.lib glu.lib opengl.lib
+RUNTIMELIBS = glut.dll
+!ELSEIF "$(USE_SYSGL)" == "1"
+EXELIBS = glut32.lib glu32.lib opengl32.lib
+RUNTIMELIBS = glut32.dll
+!ELSE
+EXELIBS = glut32$(LIBSFX).lib glu32$(LIBSFX).lib opengl32$(LIBSFX).lib
+RUNTIMELIBS = glut32$(LIBSFX).dll glu32$(LIBSFX).dll opengl32$(LIBSFX).dll
+!ENDIF
+
+!IF ("$(USE_SYSGL)" == "0") && ("$(DEBUG)" == "1")
+EXELIBS=$(EXELIBS:.lib=d.lib)
+!IF "$(RUNTIMELIBS)" != ""
+RUNTIMELIBS=$(RUNTIMELIBS:.dll=d.dll)
+!ENDIF
+!ENDIF
+
+!IF "$(STATIC_MESA)" == "1"
+EXELIBS=$(EXELIBS) winmm.lib
+!ENDIF
+
+SRCALT1 = .\$(MESAROOT)\book
+
+SRCFILES = aaindex.c aapoly.c aargb.c accanti.c accpersp.c alpha.c\
+ alpha3D.c anti.c bezcurve.c bezmesh.c checker.c clip.c colormat.c\
+ cube.c depthcue.c dof.c double.c drawf.c feedback.c fog.c\
+ fogindex.c font.c hello.c image.c light.c lines.c list.c\
+ material.c mipmap.c model.c movelight.c nurbs.c pickdepth.c\
+ picksquare.c plane.c planet.c polyoff.c polys.c quadric.c robot.c\
+ sccolorlight.c scene.c scenebamb.c sceneflat.c select.c smooth.c\
+ stencil.c stroke.c surface.c teaambient.c teapots.c tess.c\
+ tesswind.c texbind.c texgen.c texprox.c texsub.c texturesurf.c\
+ torus.c trim.c unproject.c varray.c wrap.c
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.demos b/xc/extras/Mesa/WIN32/RULES/progs.demos
new file mode 100644
index 000000000..2796c461f
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.demos
@@ -0,0 +1,35 @@
+
+!IF "$(STATIC_MESA)" == "1"
+EXELIBS = mesaglut.lib mesaglu.lib mesagl.lib
+USE_CRTDLL = 0
+!ELSEIF "$(USE_SYSGL)" == "2"
+EXELIBS = glut.lib glu.lib opengl.lib
+RUNTIMELIBS = glut.dll
+!ELSEIF "$(USE_SYSGL)" == "1"
+EXELIBS = glut32.lib glu32.lib opengl32.lib
+RUNTIMELIBS = glut32.dll
+!ELSE
+EXELIBS = glut32$(LIBSFX).lib glu32$(LIBSFX).lib opengl32$(LIBSFX).lib
+RUNTIMELIBS = glut32$(LIBSFX).dll glu32$(LIBSFX).dll opengl32$(LIBSFX).dll
+!ENDIF
+
+!IF ("$(USE_SYSGL)" == "0") && ("$(DEBUG)" == "1")
+EXELIBS=$(EXELIBS:.lib=d.lib)
+!IF "$(RUNTIMELIBS)" != ""
+RUNTIMELIBS=$(RUNTIMELIBS:.dll=d.dll)
+!ENDIF
+!ENDIF
+
+!IF "$(STATIC_MESA)" == "1"
+EXELIBS=$(EXELIBS) winmm.lib
+!ENDIF
+
+SRCALT1 = .\$(MESAROOT)\demos
+
+SRCFILES = bounce.c clearspd.c drawpix.c gamma.c gears.c glinfo.c gloss.c\
+ glutfx.c morph3d.c multiarb.c pointblast.c reflect.c spectex.c tessdemo.c\
+ texcyl.c texobj.c trispd.c winpos.c
+
+!IF "$(USE_SYSGL)" == "0"
+SRCFILES = $(SRCFILES) isosurf.c osdemo.c paltex.c renormal.c
+!ENDIF
diff --git a/xc/extras/Mesa/WIN32/RULES/progs.samples b/xc/extras/Mesa/WIN32/RULES/progs.samples
new file mode 100644
index 000000000..7a1493925
--- /dev/null
+++ b/xc/extras/Mesa/WIN32/RULES/progs.samples
@@ -0,0 +1,40 @@
+
+!IF "$(STATIC_MESA)" == "1"
+EXELIBS = mesaglut.lib mesaglu.lib mesagl.lib
+USE_CRTDLL = 0
+!ELSEIF "$(USE_SYSGL)" == "2"
+EXELIBS = glut.lib glu.lib opengl.lib
+RUNTIMELIBS = glut.dll
+!ELSEIF "$(USE_SYSGL)" == "1"
+EXELIBS = glut32.lib glu32.lib opengl32.lib
+RUNTIMELIBS = glut32.dll
+!ELSE
+EXELIBS = glut32$(LIBSFX).lib glu32$(LIBSFX).lib opengl32$(LIBSFX).lib
+RUNTIMELIBS = glut32$(LIBSFX).dll glu32$(LIBSFX).dll opengl32$(LIBSFX).dll
+!ENDIF
+
+!IF ("$(USE_SYSGL)" == "0") && ("$(DEBUG)" == "1")
+EXELIBS=$(EXELIBS:.lib=d.lib)
+!IF "$(RUNTIMELIBS)" != ""
+RUNTIMELIBS=$(RUNTIMELIBS:.dll=d.dll)
+!ENDIF
+!ENDIF
+
+!IF "$(STATIC_MESA)" == "1"
+EXELIBS=$(EXELIBS) winmm.lib
+!ENDIF
+
+SRCALT1 = .\$(MESAROOT)\samples
+
+SRCFILES = accum.c bitmap1.c bitmap2.c copy.c\
+ cursor.c depth.c eval.c fog.c font.c line.c logo.c nurb.c\
+ olympic.c overlay.c point.c prim.c quad.c rgbtoppm.c select.c\
+ shape.c sphere.c star.c stencil.c stretch.c texture.c tri.c wave.c
+
+!IF "$(USE_SYSGL)" == "0"
+SRCFILES = $(SRCFILES) blendeq.c blendxor.c
+!ENDIF
+
+# The following items have not been ported to the environment...
+
+NAUGHTY = oglinfo.c