zdbsp: Add patches for big endian machines
authorMichael Baeuerle <micha@NetBSD.org>
Mon, 4 May 2020 10:22:46 +0000 (12:22 +0200)
committerMichael Baeuerle <micha@NetBSD.org>
Mon, 4 May 2020 10:22:46 +0000 (12:22 +0200)
zdbsp/distinfo
zdbsp/patches/patch-processor.cpp [new file with mode: 0644]
zdbsp/patches/patch-wad.cpp [new file with mode: 0644]

index 2615d7419731e94156ee99a184ffe763ad3e3465..b08b5ea67a9f16093d82a7e9cfa4a4ed237f6645 100644 (file)
@@ -4,3 +4,5 @@ SHA1 (zdbsp-1.19.tar.gz) = 96ad52ab3364c58f80024b285e328b1f88487d1f
 RMD160 (zdbsp-1.19.tar.gz) = a0d2e3559ed7ef7000a667af55e77143f9367897
 SHA512 (zdbsp-1.19.tar.gz) = bfd13e38ed5c8596f10c6ff79e2fb70a0a20921d98c2a49560ed20787fb52279a5f6e7c10b57f30a5afdde8ba37635871a27f13bbff071d3cf6bec775657ad93
 Size (zdbsp-1.19.tar.gz) = 208407 bytes
+SHA1 (patch-processor.cpp) = 79333e70b6fd7183037b5cb08cf36760d9840cd2
+SHA1 (patch-wad.cpp) = 28b17377fdacc4d135a9e52a0f9ec7c9fbd2508c
diff --git a/zdbsp/patches/patch-processor.cpp b/zdbsp/patches/patch-processor.cpp
new file mode 100644 (file)
index 0000000..758e7f5
--- /dev/null
@@ -0,0 +1,96 @@
+$NetBSD$
+
+On big endian machines the build fails like this without the patch:
+error: call of overloaded 'LittleShort()' is ambiguous
+
+--- processor.cpp.orig 2016-01-07 20:33:31.000000000 +0000
++++ processor.cpp
+@@ -944,8 +944,8 @@ void FProcessor::WriteVertices (FWadWrit
\r
+       for (i = 0; i < count; ++i)\r
+       {\r
+-              verts[i*2] = LittleShort(vertdata[i].x >> FRACBITS);\r
+-              verts[i*2+1] = LittleShort(vertdata[i].y >> FRACBITS);\r
++              verts[i*2] = LittleShort((short)(vertdata[i].x >> FRACBITS));\r
++              verts[i*2+1] = LittleShort((short)(vertdata[i].y >> FRACBITS));\r
+       }\r
+       out.WriteLump ("VERTEXES", verts, sizeof(*verts)*count*2);\r
+       delete[] verts;\r
+@@ -1011,7 +1011,7 @@ void FProcessor::WriteSides (FWadWriter
+               memcpy(Sides[i].toptexture, Level.Sides[i].toptexture, 8);\r
+               memcpy(Sides[i].bottomtexture, Level.Sides[i].bottomtexture, 8);\r
+               memcpy(Sides[i].midtexture, Level.Sides[i].midtexture, 8);\r
+-              Sides[i].sector = LittleShort(Level.Sides[i].sector);\r
++              Sides[i].sector = LittleShort((unsigned short)(Level.Sides[i].sector));\r
+       }\r
+       out.WriteLump ("SIDEDEFS", Sides, Level.NumSides()*sizeof(*Sides));\r
+       delete[] Sides;\r
+@@ -1116,10 +1116,10 @@ void FProcessor::WriteNodes2 (FWadWriter
\r
+       for (i = 0; i < count; ++i)\r
+       {\r
+-              nodes[0] = LittleShort(zaNodes[i].x >> 16);\r
+-              nodes[1] = LittleShort(zaNodes[i].y >> 16);\r
+-              nodes[2] = LittleShort(zaNodes[i].dx >> 16);\r
+-              nodes[3] = LittleShort(zaNodes[i].dy >> 16);\r
++              nodes[0] = LittleShort((short)(zaNodes[i].x >> 16));\r
++              nodes[1] = LittleShort((short)(zaNodes[i].y >> 16));\r
++              nodes[2] = LittleShort((short)(zaNodes[i].dx >> 16));\r
++              nodes[3] = LittleShort((short)(zaNodes[i].dy >> 16));\r
+               nodes += 4;\r
+               const short *inodes = (short *)&zaNodes[i].bbox[0][0];\r
+               for (j = 0; j < 2*4; ++j)\r
+@@ -1162,10 +1162,10 @@ void FProcessor::WriteNodes5 (FWadWriter
+               {\r
+                       coord[j] = LittleShort(inodes[j]);\r
+               }\r
+-              nodes[i].x = LittleShort(zaNodes[i].x >> 16);\r
+-              nodes[i].y = LittleShort(zaNodes[i].y >> 16);\r
+-              nodes[i].dx = LittleShort(zaNodes[i].dx >> 16);\r
+-              nodes[i].dy = LittleShort(zaNodes[i].dy >> 16);\r
++              nodes[i].x = LittleShort((short)(zaNodes[i].x >> 16));\r
++              nodes[i].y = LittleShort((short)(zaNodes[i].y >> 16));\r
++              nodes[i].dx = LittleShort((short)(zaNodes[i].dx >> 16));\r
++              nodes[i].dy = LittleShort((short)(zaNodes[i].dy >> 16));\r
+               for (j = 0; j < 2; ++j)\r
+               {\r
+                       nodes[i].children[j] = LittleLong(zaNodes[i].children[j]);\r
+@@ -1247,8 +1247,8 @@ void FProcessor::WriteGLVertices (FWadWr
\r
+       for (i = 0; i < count; ++i)\r
+       {\r
+-              verts[i*2+1] = LittleShort(vertdata[i].x);\r
+-              verts[i*2+2] = LittleShort(vertdata[i].y);\r
++              verts[i*2+1] = LittleShort((short)(vertdata[i].x));\r
++              verts[i*2+2] = LittleShort((short)(vertdata[i].y));\r
+       }\r
+       out.WriteLump ("GL_VERT", verts, sizeof(*verts)*(count*2+1));\r
+       delete[] verts;\r
+@@ -1280,15 +1280,15 @@ void FProcessor::WriteGLSegs (FWadWriter
+               }\r
+               else\r
+               {\r
+-                      segdata[i].v1 = LittleShort(0x8000 | (WORD)(Level.GLSegs[i].v1 - Level.NumOrgVerts));\r
++                      segdata[i].v1 = LittleShort((WORD)(0x8000 | (WORD)(Level.GLSegs[i].v1 - Level.NumOrgVerts)));\r
+               }\r
+               if (Level.GLSegs[i].v2 < (DWORD)Level.NumOrgVerts)\r
+               {\r
+-                      segdata[i].v2 = (WORD)LittleShort(Level.GLSegs[i].v2);\r
++                      segdata[i].v2 = (WORD)LittleShort((WORD)Level.GLSegs[i].v2);\r
+               }\r
+               else\r
+               {\r
+-                      segdata[i].v2 = LittleShort(0x8000 | (WORD)(Level.GLSegs[i].v2 - Level.NumOrgVerts));\r
++                      segdata[i].v2 = LittleShort((WORD)(0x8000 | (WORD)(Level.GLSegs[i].v2 - Level.NumOrgVerts)));\r
+               }\r
+               segdata[i].linedef = LittleShort((WORD)Level.GLSegs[i].linedef);\r
+               segdata[i].side = LittleShort(Level.GLSegs[i].side);\r
+@@ -1333,7 +1333,7 @@ void FProcessor::WriteGLSegs5 (FWadWrite
+               {\r
+                       segdata[i].v2 = LittleLong(0x80000000u | ((int)Level.GLSegs[i].v2 - Level.NumOrgVerts));\r
+               }\r
+-              segdata[i].linedef = LittleShort(Level.GLSegs[i].linedef);\r
++              segdata[i].linedef = LittleLong(Level.GLSegs[i].linedef);\r
+               segdata[i].side = LittleShort(Level.GLSegs[i].side);\r
+               segdata[i].partner = LittleLong(Level.GLSegs[i].partner);\r
+       }\r
diff --git a/zdbsp/patches/patch-wad.cpp b/zdbsp/patches/patch-wad.cpp
new file mode 100644 (file)
index 0000000..4029b8b
--- /dev/null
@@ -0,0 +1,36 @@
+$NetBSD$
+
+On big endian machines the build fails like this without the patch:
+error: call of overloaded 'LittleLong()' is ambiguous
+
+--- wad.cpp.orig       2016-01-07 20:33:31.000000000 +0000
++++ wad.cpp
+@@ -380,8 +380,8 @@ void FWadWriter::Close ()
+       {\r
+               int32_t head[2];\r
\r
+-              head[0] = LittleLong(Lumps.Size());\r
+-              head[1] = LittleLong(ftell (File));\r
++              head[0] = LittleLong((int)Lumps.Size());\r
++              head[1] = LittleLong((int)ftell (File));\r
\r
+               SafeWrite (&Lumps[0], sizeof(WadLump)*Lumps.Size());\r
+               fseek (File, 4, SEEK_SET);\r
+@@ -396,7 +396,7 @@ void FWadWriter::CreateLabel (const char
+       WadLump lump;\r
\r
+       strncpy (lump.Name, name, 8);\r
+-      lump.FilePos = LittleLong(ftell (File));\r
++      lump.FilePos = LittleLong((int)ftell (File));\r
+       lump.Size = 0;\r
+       Lumps.Push (lump);\r
+ }\r
+@@ -406,7 +406,7 @@ void FWadWriter::WriteLump (const char *
+       WadLump lump;\r
\r
+       strncpy (lump.Name, name, 8);\r
+-      lump.FilePos = LittleLong(ftell (File));\r
++      lump.FilePos = LittleLong((int)ftell (File));\r
+       lump.Size = LittleLong(len);\r
+       Lumps.Push (lump);\r
\r