From 6f3d0b3cdb38f89f86a31e2dcb05ffc02cb262f4 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 21 Jan 2025 17:23:08 -0800
Subject: [PATCH] Fixed build when using an older Xcode SDK
Fixes https://github.com/libsdl-org/SDL/issues/12048
---
src/joystick/apple/SDL_mfijoystick.m | 4 +---
src/video/uikit/SDL_uikitpen.m | 29 ++++++++++++++++++++++++++--
2 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/src/joystick/apple/SDL_mfijoystick.m b/src/joystick/apple/SDL_mfijoystick.m
index 23d6b23f80535..811a9f1ae7606 100644
--- a/src/joystick/apple/SDL_mfijoystick.m
+++ b/src/joystick/apple/SDL_mfijoystick.m
@@ -50,9 +50,7 @@
#include <objc/message.h>
-/* remove compilation warnings for strict builds by defining these selectors, even though
- * they are only ever used indirectly through objc_msgSend
- */
+// Fix build errors when using an older SDK by defining these selectors
@interface GCController (SDL)
#if !((__IPHONE_OS_VERSION_MAX_ALLOWED >= 140500) || (__APPLETV_OS_VERSION_MAX_ALLOWED >= 140500) || (__MAC_OS_X_VERSION_MAX_ALLOWED >= 110300))
@property(class, nonatomic, readwrite) BOOL shouldMonitorBackgroundEvents;
diff --git a/src/video/uikit/SDL_uikitpen.m b/src/video/uikit/SDL_uikitpen.m
index 622513c24d37a..520968163d476 100644
--- a/src/video/uikit/SDL_uikitpen.m
+++ b/src/video/uikit/SDL_uikitpen.m
@@ -28,6 +28,31 @@
#include "../../events/SDL_pen_c.h"
+// Fix build errors when using an older SDK by defining these selectors
+#if !defined(SDL_PLATFORM_TVOS)
+
+@interface UITouch (SDL)
+#if !(__IPHONE_OS_VERSION_MAX_ALLOWED >= 170500)
+@property (nonatomic, readonly) CGFloat rollAngle;
+#endif
+@end
+
+@interface UIHoverGestureRecognizer (SDL)
+#if !(__IPHONE_OS_VERSION_MAX_ALLOWED >= 160100)
+@property (nonatomic, readonly) CGFloat zOffset;
+#endif
+#if !(__IPHONE_OS_VERSION_MAX_ALLOWED >= 160400)
+- (CGFloat) azimuthAngleInView:(UIView *) view;
+
+@property (nonatomic, readonly) CGFloat altitudeAngle;
+#endif
+#if !(__IPHONE_OS_VERSION_MAX_ALLOWED >= 170500)
+@property (nonatomic, readonly) CGFloat rollAngle;
+#endif
+@end
+
+#endif // !SDL_PLATFORM_TVOS
+
static SDL_PenID apple_pencil_id = 0;
bool UIKit_InitPen(SDL_VideoDevice *_this)
@@ -142,11 +167,11 @@ extern void UIKit_HandlePenHover(SDL_uikitview *view, UIHoverGestureRecognizer *
static void UIKit_HandlePenAxesFromUITouch(SDL_uikitview *view, UITouch *pencil)
{
float rollAngle = 0.0f;
- #if !defined(SDL_PLATFORM_TVOS)
+#if !defined(SDL_PLATFORM_TVOS)
if (@available(iOS 17.5, *)) {
rollAngle = (float) [pencil rollAngle];
}
- #endif
+#endif
SDL_Window *window = [view getSDLWindow];
const CGPoint point = [pencil locationInView:view];