2024-05-18 01:07:23 +02:00
|
|
|
From: Jan Engelhardt <ej@inai.de>
|
|
|
|
Date: Wed, 8 May 2024 13:33:41 +0200
|
|
|
|
Subject: [PATCH] build: portability fixes
|
|
|
|
References: https://github.com/ZDoom/gzdoom/pull/2562
|
2023-11-03 10:53:38 +01:00
|
|
|
|
2024-05-18 01:07:23 +02:00
|
|
|
Different architectures have different type sizes and alignments.
|
|
|
|
Don't test void* for a hardcoded size if there is not an inherent
|
|
|
|
dependency on the size. I have hereby tested gzdoom.i586 runs
|
|
|
|
inside a chroot-on-x64.
|
2023-11-03 10:53:38 +01:00
|
|
|
|
2024-05-18 01:07:23 +02:00
|
|
|
VkSurfaceKHR is not a pointer on some platforms but an integral type.
|
|
|
|
Using {} will clear it without running into a type error:
|
2024-05-08 13:37:46 +02:00
|
|
|
|
2024-05-18 01:07:23 +02:00
|
|
|
sdlglvideo.cpp:294:54: error: cannot convert 'std::nullptr_t' to
|
|
|
|
'VkSurfaceKHR' {aka 'long long unsigned int'} in initialization
|
|
|
|
VkSurfaceKHR surfacehandle = nullptr;
|
2023-11-03 10:53:38 +01:00
|
|
|
---
|
2024-05-18 01:07:23 +02:00
|
|
|
src/CMakeLists.txt | 5 +++++
|
|
|
|
src/common/engine/i_interface.cpp | 2 --
|
2023-11-03 10:53:38 +01:00
|
|
|
src/common/platform/posix/sdl/sdlglvideo.cpp | 2 +-
|
2024-05-08 13:37:46 +02:00
|
|
|
src/playsim/p_effect.h | 7 +++++--
|
2024-05-18 01:07:23 +02:00
|
|
|
4 files changed, 11 insertions(+), 5 deletions(-)
|
2023-11-03 10:53:38 +01:00
|
|
|
|
2024-05-18 01:07:23 +02:00
|
|
|
Index: gzdoom-g4.12.2/src/CMakeLists.txt
|
|
|
|
===================================================================
|
|
|
|
--- gzdoom-g4.12.2.orig/src/CMakeLists.txt
|
|
|
|
+++ gzdoom-g4.12.2/src/CMakeLists.txt
|
|
|
|
@@ -44,6 +44,11 @@ if( ${TARGET_ARCHITECTURE} MATCHES "x86_
|
|
|
|
set( X64 64 )
|
|
|
|
add_definitions( -DARCH_IA32 )
|
|
|
|
endif()
|
|
|
|
+if( ${TARGET_ARCHITECTURE} MATCHES "i386" )
|
|
|
|
+ # The production of _mm_load_si128 instructions requires flags.
|
|
|
|
+ # (This is independent of whether or not they are executed later.)
|
|
|
|
+ add_definitions( -mmmx -msse -msse2 -mfpmath=sse -DARCH_IA32 )
|
|
|
|
+endif()
|
|
|
|
|
|
|
|
if( NOT PROJECT_LIBRARIES )
|
|
|
|
set( PROJECT_LIBRARIES "" )
|
|
|
|
Index: gzdoom-g4.12.2/src/common/engine/i_interface.cpp
|
|
|
|
===================================================================
|
|
|
|
--- gzdoom-g4.12.2.orig/src/common/engine/i_interface.cpp
|
|
|
|
+++ gzdoom-g4.12.2/src/common/engine/i_interface.cpp
|
|
|
|
@@ -5,8 +5,6 @@
|
|
|
|
#include "c_cvars.h"
|
|
|
|
#include "gstrings.h"
|
|
|
|
|
|
|
|
-static_assert(sizeof(void*) == 8, "32 builds are not supported");
|
|
|
|
-
|
|
|
|
// Some global engine variables taken out of the backend code.
|
|
|
|
FStartupScreen* StartWindow;
|
|
|
|
SystemCallbacks sysCallbacks;
|
2024-05-08 13:37:46 +02:00
|
|
|
Index: gzdoom-g4.12.2/src/common/platform/posix/sdl/sdlglvideo.cpp
|
2023-11-03 10:53:38 +01:00
|
|
|
===================================================================
|
2024-05-08 13:37:46 +02:00
|
|
|
--- gzdoom-g4.12.2.orig/src/common/platform/posix/sdl/sdlglvideo.cpp
|
|
|
|
+++ gzdoom-g4.12.2/src/common/platform/posix/sdl/sdlglvideo.cpp
|
|
|
|
@@ -400,7 +400,7 @@ DFrameBuffer *SDLVideo::CreateFrameBuffe
|
2023-11-03 10:53:38 +01:00
|
|
|
builder.RequireExtension(names[i]);
|
|
|
|
auto instance = builder.Create();
|
|
|
|
|
|
|
|
- VkSurfaceKHR surfacehandle = nullptr;
|
|
|
|
+ VkSurfaceKHR surfacehandle = {};
|
|
|
|
if (!I_CreateVulkanSurface(instance->Instance, &surfacehandle))
|
|
|
|
VulkanError("I_CreateVulkanSurface failed");
|
|
|
|
|
2024-05-08 13:37:46 +02:00
|
|
|
Index: gzdoom-g4.12.2/src/playsim/p_effect.h
|
|
|
|
===================================================================
|
|
|
|
--- gzdoom-g4.12.2.orig/src/playsim/p_effect.h
|
|
|
|
+++ gzdoom-g4.12.2/src/playsim/p_effect.h
|
|
|
|
@@ -70,7 +70,10 @@ enum EParticleFlags
|
|
|
|
class DVisualThinker;
|
|
|
|
struct particle_t
|
|
|
|
{
|
|
|
|
- subsector_t* subsector; //+8 = 8
|
|
|
|
+ union {
|
|
|
|
+ subsector_t* subsector;
|
|
|
|
+ uint64_t _pad0; //+8 = 8
|
|
|
|
+ };
|
|
|
|
DVector3 Pos; //+24 = 32
|
|
|
|
FVector3 Vel; //+12 = 44
|
|
|
|
FVector3 Acc; //+12 = 56
|
|
|
|
@@ -83,7 +86,7 @@ struct particle_t
|
|
|
|
float Roll, RollVel, RollAcc; //+12 = 100
|
|
|
|
uint16_t tnext, snext, tprev; //+6 = 106
|
|
|
|
uint16_t flags; //+2 = 108
|
|
|
|
- // uint32_t padding; //+4 = 112
|
|
|
|
+ uint32_t padding; //+4 = 112
|
|
|
|
FStandaloneAnimation animData; //+16 = 128
|
|
|
|
};
|
|
|
|
|