Defining certain keywords in nasm makes it go haywire. See, https://bugzilla.nasm.us/show_bug.cgi?id=3392505 $ cat 1.asm %define TEXT _TEXT align=1 public use32 class=CODE FLAT %define DATA _DATA align=4 public use32 class=DATA FLAT %define CONST CONST2 align=4 public use32 class=DATA FLAT segment TEXT segment DATA segment CONST $ nasm -E 1.asm %line 4+1 1.asm [segment _TEXT align=1 public use32 class=CODE FLAT] [segment _DATA align=4 public use32 class=_DATA align=4 public use32 class=DATA FLAT FLAT] [segment CONST2 align=4 public use32 class=_DATA align=4 public use32 class=_DATA align=4 public use32 class=DATA FLAT FLAT FLAT] Either this (with nasm-2.0..nasm-2.09.xx), or it errors out with: 1.asm:6: error: interminable macro recursion 1.asm:7: error: interminable macro recursion ... which happens with nasm-2.10.xx-nasm-2.13.01 The glide3 tree uses this for Watcom builds / obj output format, and the result is not what is intended. After the renaming, it works as expected: $ cat 1.asm %define SEG_TEXT _TEXT align=1 public use32 class=CODE FLAT %define SEG_DATA _DATA align=4 public use32 class=DATA FLAT %define SEG_CONST CONST2 align=4 public use32 class=DATA FLAT segment SEG_TEXT segment SEG_DATA segment SEG_CONST $ nasm -E 1.asm %line 4+1 1.asm [segment _TEXT align=1 public use32 class=CODE FLAT] [segment _DATA align=4 public use32 class=DATA FLAT] [segment CONST2 align=4 public use32 class=DATA FLAT]
Here are a few notes about building Glide3x from CVS.
1.) Top Level Source Organization
The Glide source trees are branched by platform. The platform
names are internal names used at 3dfx. Since these names may not
make sense to others here is a quick list.
sst1: Voodoo Graphics
sst96: Voodoo Rush
cvg: Voodoo 2
h3: Voodoo Banshee/Voodoo 3
h5: The VSA-100 chip set used in the Voodoo4 and Voodoo5
line of products.
2.) The New Way of getting Glide from CVS.
There is now a CVS module to get glide3 named Glide3. If you get
this, you will get everything you need. All of the relevant
projects, cvs, h3 and h5, are included, as well as swlibs.
3.) The Old Way of getting Glide from CVS.
The top level module needed are glide3x and swlibs. The glide3x
module has only the glide code, without swlibs.
All glide source trees use a common set of libraries kept in the
swlibs branch. In order to build any glide library the swlibs
branch must be moved inside the glide3x directory. The swlibs
branch is not stored here within the glide3x cvs tree because it
is also shared with the glide2x branch. N.B.: If you use the CVS
module Glide3, swlibs will be in the right place, and does not
need to be moved.