Browse Source

Fix gcc errors, use defines for old C version

Kajetan Johannes Hammerle 10 months ago
parent
commit
3a86a409ed

+ 2 - 1
CMakeLists.txt

@@ -57,12 +57,13 @@ else()
     if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
         set(COMPILE_OPTIONS --coverage)
         set(LINK_OPTIONS gcov)
+        set(DEFINITIONS ERROR_SIMULATOR CORE_CHECK_MEMORY bool=_Bool true=1 false=0 nullptr=0 static_assert=_Static_assert)
     else()
         set(COMPILE_OPTIONS -fprofile-instr-generate -fcoverage-mapping)
         set(LINK_OPTIONS ${COMPILE_OPTIONS})
+        set(DEFINITIONS ERROR_SIMULATOR CORE_CHECK_MEMORY)
     endif()
     set(LOG_LEVEL 4)
-    set(DEFINITIONS ERROR_SIMULATOR CORE_CHECK_MEMORY)
     list(APPEND SRC "src/ErrorSimulator.c")
 endif()
 

+ 2 - 1
include/core/Matrix.h

@@ -10,7 +10,8 @@ typedef struct {
 
 #define CORE_ZERO_MATRIX ((CoreMatrix){0})
 #define CORE_UNIT_MATRIX                                                       \
-    ((CoreMatrix){{{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}}})
+    ((CoreMatrix){                                                             \
+        {{{1, 0, 0, 0}}, {{0, 1, 0, 0}}, {{0, 0, 1, 0}}, {{0, 0, 0, 1}}}})
 
 CoreMatrix* coreTransposeMatrix(CoreMatrix* m);
 CoreMatrix* coreMulSetMatrix(CoreMatrix* m, const CoreMatrix* a);

+ 1 - 1
include/core/Quaternion.h

@@ -8,7 +8,7 @@ typedef struct {
     float w;
 } CoreQuaternion;
 
-#define CORE_UNIT_QUATERNION ((CoreQuaternion){{0.0f, 0.0f, 0.0f}, 1.0f})
+#define CORE_UNIT_QUATERNION ((CoreQuaternion){{{0.0f, 0.0f, 0.0f}}, 1.0f})
 
 CoreQuaternion* coreAxisAngleQ(CoreQuaternion* q, const CoreVector3* axis,
                                float angle);

+ 1 - 1
include/core/Utility.h

@@ -22,7 +22,7 @@ void coreSetOutOfMemoryHandler(CoreOutOfMemoryHandler h, void* data);
 void* coreDebugAllocate(const char* file, int line, size_t n);
 void* coreDebugReallocate(const char* file, int line, void* p, size_t n);
 void coreFreeDebug(const char* file, int line, void* p);
-void corePrintMemoryReport();
+void corePrintMemoryReport(void);
 #define coreAllocate(n) coreDebugAllocate(__FILE__, __LINE__, n)
 #define coreReallocate(p, n) coreDebugReallocate(__FILE__, __LINE__, p, n)
 #define coreFree(p) coreFreeDebug(__FILE__, __LINE__, p)

+ 17 - 17
src/Matrix.c

@@ -39,7 +39,7 @@ CoreMatrix* coreMulMatrix(CoreMatrix* m, const CoreMatrix* a,
 
 CoreVector3* coreMulMatrixV3(CoreVector3* v, const CoreMatrix* m,
                              const CoreVector3* a) {
-    CoreVector4 v4 = {a->data[0], a->data[1], a->data[2], 1.0f};
+    CoreVector4 v4 = {{a->data[0], a->data[1], a->data[2], 1.0f}};
     v->data[0] = coreDotV4(m->data + 0, &v4);
     v->data[1] = coreDotV4(m->data + 1, &v4);
     v->data[2] = coreDotV4(m->data + 2, &v4);
@@ -55,7 +55,7 @@ CoreMatrix* coreScaleMatrix(CoreMatrix* m, const CoreVector3* v) {
 }
 
 CoreMatrix* coreScaleMatrixF(CoreMatrix* m, float f) {
-    return coreScaleMatrix(m, &(CoreVector3){f, f, f});
+    return coreScaleMatrix(m, &(CoreVector3){{f, f, f}});
 }
 
 CoreMatrix* coreTranslateMatrix(CoreMatrix* m, const CoreVector3* v) {
@@ -81,10 +81,10 @@ CoreMatrix* coreTranslateMatrixZ(CoreMatrix* m, float tz) {
 }
 
 CoreMatrix* coreTranslateMatrixTo(CoreMatrix* m, const CoreVector3* v) {
-    m->data[0] = (CoreVector4){1.0f, 0.0f, 0.0f, v->data[0]};
-    m->data[1] = (CoreVector4){0.0f, 1.0f, 0.0f, v->data[1]};
-    m->data[2] = (CoreVector4){0.0f, 0.0f, 1.0f, v->data[2]};
-    m->data[3] = (CoreVector4){0.0f, 0.0f, 0.0f, 1.0f};
+    m->data[0] = (CoreVector4){{1.0f, 0.0f, 0.0f, v->data[0]}};
+    m->data[1] = (CoreVector4){{0.0f, 1.0f, 0.0f, v->data[1]}};
+    m->data[2] = (CoreVector4){{0.0f, 0.0f, 1.0f, v->data[2]}};
+    m->data[3] = (CoreVector4){{0.0f, 0.0f, 0.0f, 1.0f}};
     return m;
 }
 
@@ -118,20 +118,20 @@ CoreMatrix* coreRotateMatrix(CoreMatrix* m, const CoreQuaternion* q) {
     CoreVector3 c;
     CoreVector3 d;
     coreMulQV3(&a, q,
-               &(CoreVector3){m->data[0].data[0], m->data[1].data[0],
-                              m->data[2].data[0]});
+               &(CoreVector3){{m->data[0].data[0], m->data[1].data[0],
+                               m->data[2].data[0]}});
     coreMulQV3(&b, q,
-               &(CoreVector3){m->data[0].data[1], m->data[1].data[1],
-                              m->data[2].data[1]});
+               &(CoreVector3){{m->data[0].data[1], m->data[1].data[1],
+                               m->data[2].data[1]}});
     coreMulQV3(&c, q,
-               &(CoreVector3){m->data[0].data[2], m->data[1].data[2],
-                              m->data[2].data[2]});
+               &(CoreVector3){{m->data[0].data[2], m->data[1].data[2],
+                               m->data[2].data[2]}});
     coreMulQV3(&d, q,
-               &(CoreVector3){m->data[0].data[3], m->data[1].data[3],
-                              m->data[2].data[3]});
-    m->data[0] = (CoreVector4){a.data[0], b.data[0], c.data[0], d.data[0]};
-    m->data[1] = (CoreVector4){a.data[1], b.data[1], c.data[1], d.data[1]};
-    m->data[2] = (CoreVector4){a.data[2], b.data[2], c.data[2], d.data[2]};
+               &(CoreVector3){{m->data[0].data[3], m->data[1].data[3],
+                               m->data[2].data[3]}});
+    m->data[0] = (CoreVector4){{a.data[0], b.data[0], c.data[0], d.data[0]}};
+    m->data[1] = (CoreVector4){{a.data[1], b.data[1], c.data[1], d.data[1]}};
+    m->data[2] = (CoreVector4){{a.data[2], b.data[2], c.data[2], d.data[2]}};
 
     //    Vector3 a = q * Vector3(data[0][0], data[1][0], data[2][0]);
     //    Vector3 b = q * Vector3(data[0][1], data[1][1], data[2][1]);

+ 12 - 5
src/Utility.c

@@ -46,7 +46,7 @@ void coreSetOutOfMemoryHandler(CoreOutOfMemoryHandler h, void* data) {
 
 static void* exitOnNull(void* p, size_t n) {
     if(p == nullptr) {
-        CORE_LOG_ERROR("Out of memory, requested '%zd' bytes", n)
+        CORE_LOG_ERROR("Out of memory, requested '%zu' bytes", n)
         CORE_EXIT(1);
     }
     return p;
@@ -67,9 +67,11 @@ static void* coreRealReallocate(void* oldP, size_t n) {
         return nullptr;
     }
     void* p = realloc(oldP, n);
-    while(p == nullptr && outOfMemoryHandler != nullptr) {
-        outOfMemoryHandler(outOfMemoryData);
-        p = realloc(oldP, n);
+    if(p == nullptr) {
+        while(p == nullptr && outOfMemoryHandler != nullptr) {
+            outOfMemoryHandler(outOfMemoryData);
+            p = realloc(oldP, n);
+        }
     }
     return exitOnNull(p, n);
 }
@@ -163,7 +165,12 @@ void coreFreeDebug(const char* file, int line, void* p) {
     if(p == nullptr) {
         return;
     }
-    CoreMemoryInfo* rp = (CoreMemoryInfo*)((char*)p - sizeof(CoreMemoryInfo));
+    CoreMemoryInfo* rp = nullptr;
+    void* w = (char*)p - sizeof(CoreMemoryInfo);
+    memcpy(&rp, &w, sizeof(rp));
+
+    // CoreMemoryInfo* rp = (CoreMemoryInfo*)((char*)p -
+    // sizeof(CoreMemoryInfo));
     if(checkCanary(rp->canary)) {
         file = coreGetShortFileName(file);
         CORE_LOG_ERROR("Free at %s:%d violated pre canary", file, line);

+ 1 - 1
test/modules/MatrixTests.c

@@ -3,7 +3,7 @@
 
 typedef CoreMatrix Matrix;
 typedef CoreVector3 V3;
-#define CV3(a, b, c) (&(V3){a, b, c})
+#define CV3(a, b, c) (&(V3){{a, b, c}})
 #define CV30 CV3(0.0f, 0.0f, 0.0f)
 
 static void testInit() {

+ 4 - 4
test/modules/QuaternionTests.c

@@ -3,7 +3,7 @@
 
 typedef CoreQuaternion Q;
 #define Q(a, b, c, d) (&(Q){{a, b, c}, d})
-#define CV3(a, b, c) (&(CoreVector3){a, b, c})
+#define CV3(a, b, c) (&(CoreVector3){{a, b, c}})
 #define CV30 CV3(0.0f, 0.0f, 0.0f)
 
 static void testInit() {
@@ -84,9 +84,9 @@ static void testMulVector() {
     Q q3 = CORE_UNIT_QUATERNION;
     coreAxisAngleQ(&q3, CV3(0.0f, 0.0f, 1.0f), 90.0f);
 
-    CoreVector3 v1 = {1.0f, 0.0f, 0.0f};
-    CoreVector3 v2 = {0.0f, 1.0f, 0.0f};
-    CoreVector3 v3 = {0.0f, 0.0f, 1.0f};
+    CoreVector3 v1 = {{1.0f, 0.0f, 0.0f}};
+    CoreVector3 v2 = {{0.0f, 1.0f, 0.0f}};
+    CoreVector3 v3 = {{0.0f, 0.0f, 1.0f}};
 
     CORE_TEST_V3(CV3(1.0f, 0.0f, 0.0f), coreMulQV3(CV30, &q1, &v1));
     CORE_TEST_V3(CV3(0.0f, 0.0f, 1.0f), coreMulQV3(CV30, &q1, &v2));

+ 12 - 12
test/modules/VectorTests.c

@@ -6,31 +6,31 @@
 const float eps = 0.0001f;
 
 #define V2 CoreVector2
-#define CV2(a, b, c, d) (&(V2){a, b})
+#define CV2(a, b, c, d) (&(V2){{a, b}})
 #define FV2(a, b) CV2(a, b, 0, 0)
 #define CV20 CV2(0, 0, 0, 0)
 
 #define V3 CoreVector3
-#define CV3(a, b, c, d) (&(V3){a, b, c})
+#define CV3(a, b, c, d) (&(V3){{a, b, c}})
 #define FV3(a, b, c) CV3(a, b, c, 0)
 #define CV30 CV3(0, 0, 0, 0)
 
 #define V4 CoreVector4
-#define CV4(a, b, c, d) (&(V4){a, b, c, d})
+#define CV4(a, b, c, d) (&(V4){{a, b, c, d}})
 #define CV40 CV4(0, 0, 0, 0)
 
 #define IV2 CoreIntVector2
-#define CIV2(a, b, c, d) (&(IV2){a, b})
+#define CIV2(a, b, c, d) (&(IV2){{a, b}})
 #define FIV2(a, b) CIV2(a, b, 0, 0)
 #define CIV20 CIV2(0, 0, 0, 0)
 
 #define IV3 CoreIntVector3
-#define CIV3(a, b, c, d) (&(IV3){a, b, c})
+#define CIV3(a, b, c, d) (&(IV3){{a, b, c}})
 #define FIV3(a, b, c) CIV3(a, b, c, 0)
 #define CIV30 CIV3(0, 0, 0, 0)
 
 #define IV4 CoreIntVector4
-#define CIV4(a, b, c, d) (&(IV4){a, b, c, d})
+#define CIV4(a, b, c, d) (&(IV4){{a, b, c, d}})
 #define CIV40 CIV4(0, 0, 0, 0)
 
 #define TESTS X(V2) X(V3) X(V4) X(IV2) X(IV3) X(IV4)
@@ -222,39 +222,39 @@ static void testLength() {
 
 static void testNormalize() {
     {
-        V2 v1 = {-15, 20};
+        V2 v1 = {{-15, 20}};
         V2 v2;
         coreMulV2F(&v2, &v1, 1.0f / 25.0f);
         coreNormalizeV2(&v1);
         CORE_TEST_V2(&v2, &v1);
 
-        V2 v3 = {15, 36};
+        V2 v3 = {{15, 36}};
         V2 v4;
         coreMulV2F(&v4, &v3, 1.0f / 39.0f);
         coreNormalizeV2(&v3);
         CORE_TEST_V2(&v4, &v3);
     }
     {
-        V3 v1 = {-2, 2, -1};
+        V3 v1 = {{-2, 2, -1}};
         V3 v2;
         coreMulV3F(&v2, &v1, 1.0f / 3.0f);
         coreNormalizeV3(&v1);
         CORE_TEST_V3(&v2, &v1);
 
-        V3 v3 = {6, 2, -3};
+        V3 v3 = {{6, 2, -3}};
         V3 v4;
         coreMulV3F(&v4, &v3, 1.0f / 7.0f);
         coreNormalizeV3(&v3);
         CORE_TEST_V3(&v4, &v3);
     }
     {
-        V4 v1 = {-2, 2, 0, -1};
+        V4 v1 = {{-2, 2, 0, -1}};
         V4 v2;
         coreMulV4F(&v2, &v1, 1.0f / 3.0f);
         coreNormalizeV4(&v1);
         CORE_TEST_V4(&v2, &v1);
 
-        V4 v3 = {6, 0, -6, 3};
+        V4 v3 = {{6, 0, -6, 3}};
         V4 v4;
         coreMulV4F(&v4, &v3, 1.0f / 9.0f);
         coreNormalizeV4(&v3);