Files
MINGW-packages/mingw-w64-ode/020-float.patch
Rosen Penev c09bc09435 ode: fix compilation with clang
Backported upstream patch. Added extra one for clang64.

Added clang32 where this was tested.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-12-23 00:03:17 -08:00

118 lines
4.1 KiB
Diff

--- a/ode/demo/demo_basket.cpp
+++ b/ode/demo/demo_basket.cpp
@@ -159,8 +159,12 @@ static void simLoop (int pause)
dsSetColor (1,1,1);
const dReal *SPos = dBodyGetPosition(sphbody);
const dReal *SRot = dBodyGetRotation(sphbody);
- float spos[3] = {SPos[0], SPos[1], SPos[2]};
- float srot[12] = { SRot[0], SRot[1], SRot[2], SRot[3], SRot[4], SRot[5], SRot[6], SRot[7], SRot[8], SRot[9], SRot[10], SRot[11] };
+ float spos[3];
+ for (size_t i = 0; i < sizeof(spos); ++i)
+ spos[i] = SPos[i];
+ float srot[12];
+ for (size_t i = 0; i < sizeof(srot); ++i)
+ srot[i] = SRot[i];
dsDrawSphere
(
spos,
@@ -174,11 +178,14 @@ static void simLoop (int pause)
const dReal* Pos = dGeomGetPosition(world_mesh);
//dIASSERT(dVALIDVEC3(Pos));
- float pos[3] = { Pos[0], Pos[1], Pos[2] };
-
+ float pos[3];
+ for (size_t i = 0; i < sizeof(pos); ++i)
+ pos[i] = Pos[i];
const dReal* Rot = dGeomGetRotation(world_mesh);
//dIASSERT(dVALIDMAT3(Rot));
- float rot[12] = { Rot[0], Rot[1], Rot[2], Rot[3], Rot[4], Rot[5], Rot[6], Rot[7], Rot[8], Rot[9], Rot[10], Rot[11] };
+ float rot[12];
+ for (size_t i = 0; i < sizeof(rot); ++i)
+ rot[i] = Rot[i];
int numi = sizeof(world_indices) / sizeof(dTriIndex);
--- a/ode/demo/demo_cyl.cpp
+++ b/ode/demo/demo_cyl.cpp
@@ -171,8 +171,13 @@ static void simLoop (int pause)
#ifdef BOX
const dReal *BPos = dBodyGetPosition(boxbody);
const dReal *BRot = dBodyGetRotation(boxbody);
- float bpos[3] = {BPos[0], BPos[1], BPos[2]};
- float brot[12] = { BRot[0], BRot[1], BRot[2], BRot[3], BRot[4], BRot[5], BRot[6], BRot[7], BRot[8], BRot[9], BRot[10], BRot[11] };
+ float bpos[3];
+ for (size_t i = 0; i < sizeof(bpos); ++i)
+ bpos[i] = BPos[i];
+ float brot[12];
+ for (size_t i = 0; i < sizeof(brot); ++i)
+ brot[i] = BRot[i];
+
float sides[3] = {BOXSZ, BOXSZ, BOXSZ};
dsDrawBox
(
@@ -184,8 +189,12 @@ static void simLoop (int pause)
#ifdef CYL
const dReal *CPos = dGeomGetPosition(cylgeom);
const dReal *CRot = dGeomGetRotation(cylgeom);
- float cpos[3] = {CPos[0], CPos[1], CPos[2]};
- float crot[12] = { CRot[0], CRot[1], CRot[2], CRot[3], CRot[4], CRot[5], CRot[6], CRot[7], CRot[8], CRot[9], CRot[10], CRot[11] };
+ float cpos[3];
+ for (size_t i = 0; i < sizeof(cpos); ++i)
+ cpos[i] = CPos[i];
+ float crot[12];
+ for (size_t i = 0; i < sizeof(crot); ++i)
+ crot[i] = CRot[i];
dsDrawCylinder
(
// dBodyGetPosition(cylbody),
@@ -202,10 +211,14 @@ static void simLoop (int pause)
dsSetTexture (DS_NONE);
const dReal* Pos = dGeomGetPosition(world_mesh);
- float pos[3] = { Pos[0], Pos[1], Pos[2] };
+ float pos[3];
+ for (size_t i = 0; i < sizeof(pos); ++i)
+ pos[i] = Pos[i];
const dReal* Rot = dGeomGetRotation(world_mesh);
- float rot[12] = { Rot[0], Rot[1], Rot[2], Rot[3], Rot[4], Rot[5], Rot[6], Rot[7], Rot[8], Rot[9], Rot[10], Rot[11] };
+ float rot[12];
+ for (size_t i = 0; i < sizeof(rot); ++i)
+ rot[i] = Rot[i];
int numi = sizeof(world_indices) / sizeof(dTriIndex);
--- a/ode/demo/demo_cylvssphere.cpp
+++ b/ode/demo/demo_cylvssphere.cpp
@@ -151,8 +151,12 @@ static void simLoop (int pause)
const dReal *CPos = dBodyGetPosition(cylbody);
const dReal *CRot = dBodyGetRotation(cylbody);
- float cpos[3] = {CPos[0], CPos[1], CPos[2]};
- float crot[12] = { CRot[0], CRot[1], CRot[2], CRot[3], CRot[4], CRot[5], CRot[6], CRot[7], CRot[8], CRot[9], CRot[10], CRot[11] };
+ float cpos[3];
+ for (size_t i = 0; i < sizeof(cpos); ++i)
+ cpos[i] = CPos[i];
+ float crot[12];
+ for (size_t i = 0; i < sizeof(crot); ++i)
+ crot[i] = CRot[i];
dsDrawCylinder
(
cpos,
@@ -163,8 +167,12 @@ static void simLoop (int pause)
const dReal *SPos = dBodyGetPosition(sphbody);
const dReal *SRot = dBodyGetRotation(sphbody);
- float spos[3] = {SPos[0], SPos[1], SPos[2]};
- float srot[12] = { SRot[0], SRot[1], SRot[2], SRot[3], SRot[4], SRot[5], SRot[6], SRot[7], SRot[8], SRot[9], SRot[10], SRot[11] };
+ float spos[3];
+ for (size_t i = 0; i < sizeof(spos); ++i)
+ spos[i] = SPos[i];
+ float srot[12];
+ for (size_t i = 0; i < sizeof(srot); ++i)
+ srot[i] = SRot[i];
dsDrawSphere
(
spos,