Browse Source

cmake: port back Apple changes from SDL3

Anonymous Maarten 1 year ago
parent
commit
354a35c1d7
4 changed files with 26 additions and 20 deletions
  1. 5 1
      .github/workflows/main.yml
  2. 14 14
      CMakeLists.txt
  3. 1 1
      cmake/sdlchecks.cmake
  4. 6 4
      cmake/sdlplatform.cmake

+ 5 - 1
.github/workflows/main.yml

@@ -29,6 +29,7 @@ jobs:
 
         - { name: Ubuntu 22.04 (CMake),           os: ubuntu-22.04,   shell: sh }
         - { name: Ubuntu 22.04 (autotools),       os: ubuntu-22.04,   shell: sh,    autotools: true }
+        - { name: iOS (CMake),                    os: macos-latest,   shell: sh,    cmake: '-DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES="arm64"', cross: true, test-pkg-config: false }
         - { name: MacOS (CMake),                  os: macos-latest,   shell: sh,    cmake: '-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"' }
         - { name: MacOS (autotools),              os: macos-latest,   shell: sh,    autotools: true }
 
@@ -107,7 +108,7 @@ jobs:
         ${{ matrix.platform.source_cmd }}
         cmake --build build/ --config Release --verbose --parallel
     - name: Run build-time tests (CMake)
-      if: "! matrix.platform.autotools"
+      if: ${{ ! matrix.platform.autotools && !matrix.platform.cross }}
       run: |
         ${{ matrix.platform.source_cmd }}
         set -eu
@@ -197,14 +198,17 @@ jobs:
         ${{ matrix.platform.source_cmd }}
         cmake -S cmake/test -B cmake_config_build -G Ninja \
           -DCMAKE_BUILD_TYPE=Release \
+          ${{ matrix.platform.cmake }} \
           -DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }}
         cmake --build cmake_config_build --verbose
     - name: Verify sdl2-config
+      if: ${{ !!matrix.platform.test-pkg-config }}
       run: |
         ${{ matrix.platform.source_cmd }}
         export PATH=${{ env.SDL2_DIR }}/bin:$PATH
         cmake/test/test_sdlconfig.sh
     - name: Verify sdl2.pc
+      if: ${{ !!matrix.platform.test-pkg-config }}
       run: |
         ${{ matrix.platform.source_cmd }}
         export PKG_CONFIG_PATH=${{ env.SDL2_DIR }}/lib/pkgconfig

+ 14 - 14
CMakeLists.txt

@@ -198,7 +198,7 @@ endif()
 #  so we'll just use libusb when it's available. libusb does not support iOS,
 #  so we default to yes on iOS.
 #  TODO: Windows can support libusb, the hid.c file just depends on Unix APIs
-if((WINDOWS AND NOT WINDOWS_STORE) OR IOS OR TVOS OR ANDROID)
+if((WINDOWS AND NOT WINDOWS_STORE) OR IOS OR TVOS OR VISIONOS OR WATCHOS OR ANDROID)
   set(HIDAPI_SKIP_LIBUSB TRUE)
 else()
   set(HIDAPI_SKIP_LIBUSB FALSE)
@@ -244,7 +244,7 @@ endif()
 if(UNIX OR MINGW OR MSYS OR (USE_CLANG AND NOT WINDOWS) OR VITA OR PSP OR PS2 OR N3DS OR SDL_CPU_ARM64EC)
   set(OPT_DEF_LIBC ON)
 endif()
-if(WINDOWS OR DARWIN OR MACOSX OR IOS OR TVOS)
+if(WINDOWS OR MACOS OR IOS OR TVOS OR VISIONOS OR WATCHOS)
   set(SDL_SYSTEM_ICONV_DEFAULT OFF)
 else()
   set(SDL_SYSTEM_ICONV_DEFAULT ON)
@@ -2076,7 +2076,7 @@ elseif(APPLE)
   # !!! FIXME: we need Carbon for some very old API calls in
   # !!! FIXME:  src/video/cocoa/SDL_cocoakeyboard.c, but we should figure out
   # !!! FIXME:  how to dump those.
-  if(DARWIN OR MACOSX)
+  if(MACOS)
     set(SDL_FRAMEWORK_COCOA 1)
     set(SDL_FRAMEWORK_CARBON 1)
   endif()
@@ -2090,12 +2090,12 @@ elseif(APPLE)
     set(HAVE_SDL_FILE TRUE)
   endif()
 
-  if(IOS OR TVOS)
+  if(IOS OR TVOS OR VISIONOS OR WATCHOS)
     file(GLOB SDLMAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/uikit/*.c)
   endif()
 
   if(SDL_MISC)
-    if(IOS OR TVOS)
+    if(IOS OR TVOS OR VISIONOS OR WATCHOS)
       file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/ios/*.m)
     else()
       file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/macosx/*.m)
@@ -2120,10 +2120,10 @@ elseif(APPLE)
 
   if(SDL_JOYSTICK)
     file(GLOB MFI_JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/iphoneos/*.m)
-    if(IOS OR TVOS)
+    if(IOS OR TVOS OR VISIONOS OR WATCHOS)
       file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/steam/*.c)
       set(SDL_JOYSTICK_MFI 1)
-      if(IOS)
+      if(IOS OR VISIONOS OR WATCHOS)
         set(SDL_FRAMEWORK_COREMOTION 1)
       endif()
       set(SDL_FRAMEWORK_GAMECONTROLLER 1)
@@ -2164,7 +2164,7 @@ elseif(APPLE)
   endif()
 
   if(SDL_HAPTIC)
-    if (IOS OR TVOS)
+    if(IOS OR TVOS OR VISIONOS OR WATCHOS)
       file(GLOB HAPTIC_SOURCES ${SDL2_SOURCE_DIR}/src/haptic/dummy/*.c)
       set(SDL_HAPTIC_DUMMY 1)
     else()
@@ -2178,7 +2178,7 @@ elseif(APPLE)
   endif()
 
   if(SDL_POWER)
-    if (IOS OR TVOS)
+    if(IOS OR TVOS OR VISIONOS OR WATCHOS)
       file(GLOB POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/uikit/*.m)
       set(SDL_POWER_UIKIT 1)
     else()
@@ -2211,7 +2211,7 @@ elseif(APPLE)
   endif()
 
   if(SDL_SENSOR)
-    if(IOS)
+    if(IOS OR VISIONOS OR WATCHOS)
       set(SDL_SENSOR_COREMOTION 1)
       set(HAVE_SDL_SENSORS TRUE)
       file(GLOB SENSOR_SOURCES ${SDL2_SOURCE_DIR}/src/sensor/coremotion/*.m)
@@ -2221,7 +2221,7 @@ elseif(APPLE)
 
   # iOS hack needed - http://code.google.com/p/ios-cmake/ ?
   if(SDL_VIDEO)
-    if (IOS OR TVOS)
+    if(IOS OR TVOS OR VISIONOS OR WATCHOS)
       set(SDL_VIDEO_DRIVER_UIKIT 1)
       set(SDL_FRAMEWORK_COREGRAPHICS 1)
       set(SDL_FRAMEWORK_QUARTZCORE 1)
@@ -2242,7 +2242,7 @@ elseif(APPLE)
     endif()
 
     if(SDL_OPENGLES)
-      if(IOS OR TVOS)
+      if(IOS OR TVOS OR VISIONOS OR WATCHOS)
         set(SDL_FRAMEWORK_OPENGLES 1)
         set(SDL_VIDEO_OPENGL_ES 1)
         set(SDL_VIDEO_RENDER_OGL_ES 1)
@@ -2345,7 +2345,7 @@ elseif(APPLE)
     endif()
   endif()
   if(SDL_FRAMEWORK_METAL)
-    if(IOS OR TVOS)
+    if(IOS OR TVOS OR VISIONOS OR WATCHOS)
       list(APPEND PKGCONFIG_LDFLAGS "-Wl,-framework,Metal")
       list(APPEND CMAKE_LIBS "$<LINK_LIBRARY:FRAMEWORK,Metal>")
     else()
@@ -2358,7 +2358,7 @@ elseif(APPLE)
     list(APPEND CMAKE_LIBS "$<LINK_LIBRARY:FRAMEWORK,OpenGLES>")
   endif()
   if(SDL_FRAMEWORK_QUARTZCORE)
-    if(IOS OR TVOS)
+    if(IOS OR TVOS OR VISIONOS OR WATCHOS)
       list(APPEND PKGCONFIG_LDFLAGS "-Wl,-framework,QuartzCore")
       list(APPEND CMAKE_LIBS "$<LINK_LIBRARY:FRAMEWORK,QuartzCore>")
     else()

+ 1 - 1
cmake/sdlchecks.cmake

@@ -947,7 +947,7 @@ macro(CheckPTHREAD)
     elseif(BSDI)
       set(PTHREAD_CFLAGS "-D_REENTRANT -D_THREAD_SAFE")
       set(PTHREAD_LDFLAGS "")
-    elseif(DARWIN)
+    elseif(MACOS)
       set(PTHREAD_CFLAGS "-D_THREAD_SAFE")
       # causes Carbon.p complaints?
       # set(PTHREAD_CFLAGS "-D_REENTRANT -D_THREAD_SAFE")

+ 6 - 4
cmake/sdlplatform.cmake

@@ -32,10 +32,8 @@ macro(SDL_DetectCMakePlatform)
       set(SDL_CMAKE_PLATFORM QNX)
     endif()
   elseif(APPLE)
-    if(CMAKE_SYSTEM_NAME MATCHES ".*Darwin.*")
-      set(SDL_CMAKE_PLATFORM DARWIN)
-    elseif(CMAKE_SYSTEM_NAME MATCHES ".*MacOS.*")
-      set(SDL_CMAKE_PLATFORM MACOSX)
+    if(CMAKE_SYSTEM_NAME MATCHES ".*(Darwin|MacOS).*")
+      set(SDL_CMAKE_PLATFORM MACOS)
     elseif(CMAKE_SYSTEM_NAME MATCHES ".*tvOS.*")
       set(SDL_CMAKE_PLATFORM TVOS)
     elseif(CMAKE_SYSTEM_NAME MATCHES ".*iOS.*")
@@ -43,6 +41,10 @@ macro(SDL_DetectCMakePlatform)
       if(CMAKE_VERSION VERSION_LESS 3.14)
         set(SDL_CMAKE_PLATFORM IOS)
       endif()
+    elseif(CMAKE_SYSTEM_NAME MATCHES ".*watchOS.*")
+      set(SDL_CMAKE_PLATFORM WATCHOS)
+    elseif (CMAKE_SYSTEM_NAME MATCHES "visionOS")
+      set(SDL_CMAKE_PLATFORM VISIONOS)
     endif()
   elseif(CMAKE_SYSTEM_NAME MATCHES "BeOS.*")
     message_error("BeOS support has been removed as of SDL 2.0.2.")