Fixed bug 2755 - SDL2 fails to build on Solaris 10 u3 UX-admin I am compiling with the Sun Studio 12 u2 compiler. There are multiple issues with the build, but this particular issue appears to be that it is illegal to declare a union of a struct of floats and a float. While GCC 4.8.1 does not flag this as an error, Sun Studio is much more standards compliant and strict, halting further compilation with an error.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
diff --git a/src/render/SDL_d3dmath.c b/src/render/SDL_d3dmath.c
index 1292aad..8f99353 100644
--- a/src/render/SDL_d3dmath.c
+++ b/src/render/SDL_d3dmath.c
@@ -31,32 +31,32 @@ Float4X4 MatrixIdentity()
{
Float4X4 m;
SDL_zero(m);
- m._11 = 1.0f;
- m._22 = 1.0f;
- m._33 = 1.0f;
- m._44 = 1.0f;
+ m.v._11 = 1.0f;
+ m.v._22 = 1.0f;
+ m.v._33 = 1.0f;
+ m.v._44 = 1.0f;
return m;
}
Float4X4 MatrixMultiply(Float4X4 M1, Float4X4 M2)
{
Float4X4 m;
- m._11 = M1._11 * M2._11 + M1._12 * M2._21 + M1._13 * M2._31 + M1._14 * M2._41;
- m._12 = M1._11 * M2._12 + M1._12 * M2._22 + M1._13 * M2._32 + M1._14 * M2._42;
- m._13 = M1._11 * M2._13 + M1._12 * M2._23 + M1._13 * M2._33 + M1._14 * M2._43;
- m._14 = M1._11 * M2._14 + M1._12 * M2._24 + M1._13 * M2._34 + M1._14 * M2._44;
- m._21 = M1._21 * M2._11 + M1._22 * M2._21 + M1._23 * M2._31 + M1._24 * M2._41;
- m._22 = M1._21 * M2._12 + M1._22 * M2._22 + M1._23 * M2._32 + M1._24 * M2._42;
- m._23 = M1._21 * M2._13 + M1._22 * M2._23 + M1._23 * M2._33 + M1._24 * M2._43;
- m._24 = M1._21 * M2._14 + M1._22 * M2._24 + M1._23 * M2._34 + M1._24 * M2._44;
- m._31 = M1._31 * M2._11 + M1._32 * M2._21 + M1._33 * M2._31 + M1._34 * M2._41;
- m._32 = M1._31 * M2._12 + M1._32 * M2._22 + M1._33 * M2._32 + M1._34 * M2._42;
- m._33 = M1._31 * M2._13 + M1._32 * M2._23 + M1._33 * M2._33 + M1._34 * M2._43;
- m._34 = M1._31 * M2._14 + M1._32 * M2._24 + M1._33 * M2._34 + M1._34 * M2._44;
- m._41 = M1._41 * M2._11 + M1._42 * M2._21 + M1._43 * M2._31 + M1._44 * M2._41;
- m._42 = M1._41 * M2._12 + M1._42 * M2._22 + M1._43 * M2._32 + M1._44 * M2._42;
- m._43 = M1._41 * M2._13 + M1._42 * M2._23 + M1._43 * M2._33 + M1._44 * M2._43;
- m._44 = M1._41 * M2._14 + M1._42 * M2._24 + M1._43 * M2._34 + M1._44 * M2._44;
+ m.v._11 = M1.v._11 * M2.v._11 + M1.v._12 * M2.v._21 + M1.v._13 * M2.v._31 + M1.v._14 * M2.v._41;
+ m.v._12 = M1.v._11 * M2.v._12 + M1.v._12 * M2.v._22 + M1.v._13 * M2.v._32 + M1.v._14 * M2.v._42;
+ m.v._13 = M1.v._11 * M2.v._13 + M1.v._12 * M2.v._23 + M1.v._13 * M2.v._33 + M1.v._14 * M2.v._43;
+ m.v._14 = M1.v._11 * M2.v._14 + M1.v._12 * M2.v._24 + M1.v._13 * M2.v._34 + M1.v._14 * M2.v._44;
+ m.v._21 = M1.v._21 * M2.v._11 + M1.v._22 * M2.v._21 + M1.v._23 * M2.v._31 + M1.v._24 * M2.v._41;
+ m.v._22 = M1.v._21 * M2.v._12 + M1.v._22 * M2.v._22 + M1.v._23 * M2.v._32 + M1.v._24 * M2.v._42;
+ m.v._23 = M1.v._21 * M2.v._13 + M1.v._22 * M2.v._23 + M1.v._23 * M2.v._33 + M1.v._24 * M2.v._43;
+ m.v._24 = M1.v._21 * M2.v._14 + M1.v._22 * M2.v._24 + M1.v._23 * M2.v._34 + M1.v._24 * M2.v._44;
+ m.v._31 = M1.v._31 * M2.v._11 + M1.v._32 * M2.v._21 + M1.v._33 * M2.v._31 + M1.v._34 * M2.v._41;
+ m.v._32 = M1.v._31 * M2.v._12 + M1.v._32 * M2.v._22 + M1.v._33 * M2.v._32 + M1.v._34 * M2.v._42;
+ m.v._33 = M1.v._31 * M2.v._13 + M1.v._32 * M2.v._23 + M1.v._33 * M2.v._33 + M1.v._34 * M2.v._43;
+ m.v._34 = M1.v._31 * M2.v._14 + M1.v._32 * M2.v._24 + M1.v._33 * M2.v._34 + M1.v._34 * M2.v._44;
+ m.v._41 = M1.v._41 * M2.v._11 + M1.v._42 * M2.v._21 + M1.v._43 * M2.v._31 + M1.v._44 * M2.v._41;
+ m.v._42 = M1.v._41 * M2.v._12 + M1.v._42 * M2.v._22 + M1.v._43 * M2.v._32 + M1.v._44 * M2.v._42;
+ m.v._43 = M1.v._41 * M2.v._13 + M1.v._42 * M2.v._23 + M1.v._43 * M2.v._33 + M1.v._44 * M2.v._43;
+ m.v._44 = M1.v._41 * M2.v._14 + M1.v._42 * M2.v._24 + M1.v._43 * M2.v._34 + M1.v._44 * M2.v._44;
return m;
}
@@ -64,10 +64,10 @@ Float4X4 MatrixScaling(float x, float y, float z)
{
Float4X4 m;
SDL_zero(m);
- m._11 = x;
- m._22 = y;
- m._33 = z;
- m._44 = 1.0f;
+ m.v._11 = x;
+ m.v._22 = y;
+ m.v._33 = z;
+ m.v._44 = 1.0f;
return m;
}
@@ -75,13 +75,13 @@ Float4X4 MatrixTranslation(float x, float y, float z)
{
Float4X4 m;
SDL_zero(m);
- m._11 = 1.0f;
- m._22 = 1.0f;
- m._33 = 1.0f;
- m._44 = 1.0f;
- m._41 = x;
- m._42 = y;
- m._43 = z;
+ m.v._11 = 1.0f;
+ m.v._22 = 1.0f;
+ m.v._33 = 1.0f;
+ m.v._44 = 1.0f;
+ m.v._41 = x;
+ m.v._42 = y;
+ m.v._43 = z;
return m;
}
@@ -91,12 +91,12 @@ Float4X4 MatrixRotationX(float r)
float cosR = SDL_cosf(r);
Float4X4 m;
SDL_zero(m);
- m._11 = 1.0f;
- m._22 = cosR;
- m._23 = sinR;
- m._32 = -sinR;
- m._33 = cosR;
- m._44 = 1.0f;
+ m.v._11 = 1.0f;
+ m.v._22 = cosR;
+ m.v._23 = sinR;
+ m.v._32 = -sinR;
+ m.v._33 = cosR;
+ m.v._44 = 1.0f;
return m;
}
@@ -106,12 +106,12 @@ Float4X4 MatrixRotationY(float r)
float cosR = SDL_cosf(r);
Float4X4 m;
SDL_zero(m);
- m._11 = cosR;
- m._13 = -sinR;
- m._22 = 1.0f;
- m._31 = sinR;
- m._33 = cosR;
- m._44 = 1.0f;
+ m.v._11 = cosR;
+ m.v._13 = -sinR;
+ m.v._22 = 1.0f;
+ m.v._31 = sinR;
+ m.v._33 = cosR;
+ m.v._44 = 1.0f;
return m;
}
@@ -121,12 +121,12 @@ Float4X4 MatrixRotationZ(float r)
float cosR = SDL_cosf(r);
Float4X4 m;
SDL_zero(m);
- m._11 = cosR;
- m._12 = sinR;
- m._21 = -sinR;
- m._22 = cosR;
- m._33 = 1.0f;
- m._44 = 1.0f;
+ m.v._11 = cosR;
+ m.v._12 = sinR;
+ m.v._21 = -sinR;
+ m.v._22 = cosR;
+ m.v._33 = 1.0f;
+ m.v._44 = 1.0f;
return m;
}
diff --git a/src/render/SDL_d3dmath.h b/src/render/SDL_d3dmath.h
index cbf622a..a859f44 100644
--- a/src/render/SDL_d3dmath.h
+++ b/src/render/SDL_d3dmath.h
@@ -53,7 +53,7 @@ typedef struct
float _21, _22, _23, _24;
float _31, _32, _33, _34;
float _41, _42, _43, _44;
- };
+ } v;
float m[4][4];
};
} Float4X4;