From b0ee280710a497dcd2cfd5437ca8b535b44855cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Thu, 12 Dec 2024 18:56:33 +0100 Subject: [PATCH] Jolt: Fix multiple definition LTO linking issue with mingw-gcc (cherry picked from commit 0ba875ec2939d2de0f971cdca17f3830c8272245) --- modules/jolt_physics/spaces/jolt_layers.cpp | 4 ++++ modules/jolt_physics/spaces/jolt_layers.h | 1 + 2 files changed, 5 insertions(+) diff --git a/modules/jolt_physics/spaces/jolt_layers.cpp b/modules/jolt_physics/spaces/jolt_layers.cpp index bc3d75fd046..53be222082b 100644 --- a/modules/jolt_physics/spaces/jolt_layers.cpp +++ b/modules/jolt_physics/spaces/jolt_layers.cpp @@ -193,6 +193,10 @@ JoltLayers::JoltLayers() { _allocate_object_layer(0); } +// MinGW GCC using LTO will emit errors during linking if this is defined in the header file, implicitly or otherwise. +// Likely caused by this GCC bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94156 +JoltLayers::~JoltLayers() = default; + JPH::ObjectLayer JoltLayers::to_object_layer(JPH::BroadPhaseLayer p_broad_phase_layer, uint32_t p_collision_layer, uint32_t p_collision_mask) { const uint64_t collision = encode_collision(p_collision_layer, p_collision_mask); diff --git a/modules/jolt_physics/spaces/jolt_layers.h b/modules/jolt_physics/spaces/jolt_layers.h index bdfec6a0c0f..fbd2118da84 100644 --- a/modules/jolt_physics/spaces/jolt_layers.h +++ b/modules/jolt_physics/spaces/jolt_layers.h @@ -65,6 +65,7 @@ class JoltLayers final public: JoltLayers(); + virtual ~JoltLayers(); JPH::ObjectLayer to_object_layer(JPH::BroadPhaseLayer p_broad_phase_layer, uint32_t p_collision_layer, uint32_t p_collision_mask); void from_object_layer(JPH::ObjectLayer p_encoded_layer, JPH::BroadPhaseLayer &r_broad_phase_layer, uint32_t &r_collision_layer, uint32_t &r_collision_mask) const;