From b9d629672b14ca205e99f8c54d15a97b27d25d27 Mon Sep 17 00:00:00 2001 From: Dan Rosser Date: Sat, 3 Oct 2026 16:12:24 +1000 Subject: [PATCH 1/2] Apple deployment targets: iOS 15.0, tvOS 18.0 - tvOS 18.0 everywhere (tvOS lib, macOS any-platform lib, tvOS template, tvOS CoreOF.xcconfig; tvOS template Project.xcconfig now sets it too) - iOS 15.0 everywhere (macOS template had 17.4, IOS_Testing 13.0) - CMake ios.toolchain defaults: iOS 15.0, tvOS 18.0, macOS 12.0, watchOS 9.0, visionOS 1.0, Mac Catalyst 15.0; explicit DEPLOYMENT_TARGET still overrides --- apps/devApps/IOS_Testing/Project.xcconfig | 2 +- .../CMake/toolchain/ios.toolchain.cmake | 27 ++++++++++--------- .../project.pbxproj | 4 +-- .../project/tvOS/CoreOF.xcconfig | 2 +- .../tvOS/tvOS+OFLib.xcodeproj/project.pbxproj | 4 +-- .../emptyExample.xcodeproj/project.pbxproj | 4 +-- scripts/templates/tvOS/Project.xcconfig | 1 + .../emptyExample.xcodeproj/project.pbxproj | 8 +++--- 8 files changed, 28 insertions(+), 24 deletions(-) diff --git a/apps/devApps/IOS_Testing/Project.xcconfig b/apps/devApps/IOS_Testing/Project.xcconfig index 1d207fa4069..91cc4b984d8 100644 --- a/apps/devApps/IOS_Testing/Project.xcconfig +++ b/apps/devApps/IOS_Testing/Project.xcconfig @@ -11,7 +11,7 @@ HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) ENABLE_BITCODE = NO COMPRESS_PNG_FILES = NO GCC_THUMB_SUPPORT = NO -IPHONEOS_DEPLOYMENT_TARGET = 13.0 +IPHONEOS_DEPLOYMENT_TARGET = 15.0 COMPILER_INDEX_STORE_ENABLE = NO PRODUCT_BUNDLE_IDENTIFIER = cc.openFrameworks.$(TARGET_NAME) diff --git a/libs/openFrameworksCompiled/project/CMake/toolchain/ios.toolchain.cmake b/libs/openFrameworksCompiled/project/CMake/toolchain/ios.toolchain.cmake index 509ca4b008c..2833be390a2 100644 --- a/libs/openFrameworksCompiled/project/CMake/toolchain/ios.toolchain.cmake +++ b/libs/openFrameworksCompiled/project/CMake/toolchain/ios.toolchain.cmake @@ -258,25 +258,28 @@ set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL # Specify the minimum version of the deployment target. if(NOT DEFINED DEPLOYMENT_TARGET) if (PLATFORM MATCHES "WATCHOS") - # Unless specified, SDK version 4.0 is used by default as minimum target version (watchOS). - set(DEPLOYMENT_TARGET "6.0") + # Unless specified, watchOS 9.0 is used by default as minimum target version (Xcode 27 minimum). + set(DEPLOYMENT_TARGET "9.0") elseif(PLATFORM STREQUAL "MAC") - # Unless specified, SDK version 10.13 (High Sierra) is used by default as the minimum target version (macos). - set(DEPLOYMENT_TARGET "10.15") + # Unless specified, macOS 12.0 is used by default as the minimum target version (Xcode 27 minimum). + set(DEPLOYMENT_TARGET "12.0") elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "SIMULATOR64_VISIONOS") - # Unless specified, SDK version 1.0 is used by default as minimum target version (visionOS). - set(DEPLOYMENT_TARGET "1.1") + # Unless specified, visionOS 1.0 is used by default as minimum target version. + set(DEPLOYMENT_TARGET "1.0") elseif(PLATFORM STREQUAL "MAC_ARM64") - # Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on arm). - set(DEPLOYMENT_TARGET "11.0") + # Unless specified, macOS 12.0 is used by default as the minimum target version (macOS on arm). + set(DEPLOYMENT_TARGET "12.0") elseif(PLATFORM STREQUAL "MAC_UNIVERSAL") - # Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version for universal builds. - set(DEPLOYMENT_TARGET "11.0") + # Unless specified, macOS 12.0 is used by default as minimum target version for universal builds. + set(DEPLOYMENT_TARGET "12.0") elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64") - # Unless specified, SDK version 13.0 is used by default as the minimum target version (mac catalyst minimum requirement). + # Unless specified, iOS 15.0 (macOS 12.0) is used by default as the minimum target version (Mac Catalyst). set(DEPLOYMENT_TARGET "15.0") + elseif(PLATFORM MATCHES "TVOS") + # Unless specified, tvOS 18.0 is used by default as the minimum target version. + set(DEPLOYMENT_TARGET "18.0") else() - # Unless specified, SDK version 11.0 is used by default as the minimum target version (iOS, tvOS). + # Unless specified, iOS 15.0 is used by default as the minimum target version (Xcode 27 minimum). set(DEPLOYMENT_TARGET "15.0") endif() message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!") diff --git a/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj b/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj index 4352ff25fa1..4974f0316e7 100644 --- a/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj +++ b/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj @@ -2174,7 +2174,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,3,4,7"; - TVOS_DEPLOYMENT_TARGET = 17.0; + TVOS_DEPLOYMENT_TARGET = 18.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; WATCHOS_DEPLOYMENT_TARGET = 9.0; @@ -2283,7 +2283,7 @@ SWIFT_INSTALL_OBJC_HEADER = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,3,4,7"; - TVOS_DEPLOYMENT_TARGET = 17.0; + TVOS_DEPLOYMENT_TARGET = 18.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; WATCHOS_DEPLOYMENT_TARGET = 9.0; diff --git a/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig b/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig index 8515895bcfb..6d864b200f2 100644 --- a/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig +++ b/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig @@ -3,7 +3,7 @@ CLANG_CXX_LIBRARY = libc++ CLANG_ENABLE_OBJC_ARC = YES CLANG_CXX_LANGUAGE_STANDARD = c++23 CLANG_C_LANGUAGE_STANDARD = c17 -TVOS_DEPLOYMENT_TARGET = 15.0 +TVOS_DEPLOYMENT_TARGET = 18.0 OF_USING_STD_FS = YES diff --git a/libs/openFrameworksCompiled/project/tvOS/tvOS+OFLib.xcodeproj/project.pbxproj b/libs/openFrameworksCompiled/project/tvOS/tvOS+OFLib.xcodeproj/project.pbxproj index a725994853e..401f332c57f 100644 --- a/libs/openFrameworksCompiled/project/tvOS/tvOS+OFLib.xcodeproj/project.pbxproj +++ b/libs/openFrameworksCompiled/project/tvOS/tvOS+OFLib.xcodeproj/project.pbxproj @@ -1165,7 +1165,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = appletvos; SYMROOT = "$(SRCROOT)/../../lib/tvos/"; - TVOS_DEPLOYMENT_TARGET = 17.2; + TVOS_DEPLOYMENT_TARGET = 18.0; }; name = Debug; }; @@ -1212,7 +1212,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = appletvos; SYMROOT = "$(SRCROOT)/../../lib/tvos/"; - TVOS_DEPLOYMENT_TARGET = 17.2; + TVOS_DEPLOYMENT_TARGET = 18.0; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj b/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj index 2854ae670c4..e992e95fb43 100644 --- a/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj +++ b/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj @@ -358,7 +358,7 @@ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]": "YES", "MTL_ENABLE_DEBUG_INFO": "INCLUDE_SOURCE", "MTL_FAST_MATH": "YES", - "IPHONEOS_DEPLOYMENT_TARGET": "17.4", + "IPHONEOS_DEPLOYMENT_TARGET": "15.0", "SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD": "YES", "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]": "YES", "GENERATE_INFOPLIST_FILE": "YES", @@ -925,7 +925,7 @@ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]": "YES", "MTL_ENABLE_DEBUG_INFO": "NO", "MTL_FAST_MATH": "YES", - "IPHONEOS_DEPLOYMENT_TARGET": "17.4", + "IPHONEOS_DEPLOYMENT_TARGET": "15.0", "SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD": "YES", "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]": "YES", "GENERATE_INFOPLIST_FILE": "YES", diff --git a/scripts/templates/tvOS/Project.xcconfig b/scripts/templates/tvOS/Project.xcconfig index b403fbbf7ce..8cb20f3a3f0 100644 --- a/scripts/templates/tvOS/Project.xcconfig +++ b/scripts/templates/tvOS/Project.xcconfig @@ -14,3 +14,4 @@ HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) ENABLE_BITCODE = NO COMPRESS_PNG_FILES = NO GCC_THUMB_SUPPORT = NO +TVOS_DEPLOYMENT_TARGET = 18.0 diff --git a/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj b/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj index 03a1eba406e..b81b0429c0c 100644 --- a/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj +++ b/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj @@ -184,7 +184,7 @@ "CLANG_WARN_OBJC_ROOT_CLASS": "YES_ERROR", "ENABLE_NS_ASSERTIONS": "NO", "SDKROOT": "appletvos", - "TVOS_DEPLOYMENT_TARGET": "17.4", + "TVOS_DEPLOYMENT_TARGET": "18.0", "CLANG_CXX_LIBRARY": "libc++", "ENABLE_STRICT_OBJC_MSGSEND": "YES", "INFOPLIST_FILE": "ofxtvOS-Info.plist", @@ -209,7 +209,7 @@ "LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER": "NO", "INFOPLIST_FILE": "ofxtvOS-Info.plist", "CLANG_CXX_LANGUAGE_STANDARD": "c++23", - "TVOS_DEPLOYMENT_TARGET": "17.2", + "TVOS_DEPLOYMENT_TARGET": "18.0", "HEADER_SEARCH_PATHS": "$(OF_CORE_HEADERS)", "PRODUCT_NAME": "$(TARGET_NAME)", "ASSETCATALOG_COMPILER_APPICON_NAME": "App Icon", @@ -613,7 +613,7 @@ "ENABLE_TESTABILITY": "YES", "CLANG_WARN_BOOL_CONVERSION": "YES", "CLANG_WARN_UNREACHABLE_CODE": "YES", - "TVOS_DEPLOYMENT_TARGET": "17.4", + "TVOS_DEPLOYMENT_TARGET": "18.0", "ENABLE_STRICT_OBJC_MSGSEND": "YES", "GCC_PREPROCESSOR_DEFINITIONS": [ "DEBUG=1", @@ -655,7 +655,7 @@ "LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER": "NO", "INFOPLIST_FILE": "ofxtvOS-Info.plist", "CLANG_CXX_LANGUAGE_STANDARD": "c++23", - "TVOS_DEPLOYMENT_TARGET": "17.2", + "TVOS_DEPLOYMENT_TARGET": "18.0", "HEADER_SEARCH_PATHS": "$(OF_CORE_HEADERS)", "PRODUCT_NAME": "$(TARGET_NAME)", "ASSETCATALOG_COMPILER_APPICON_NAME": "App Icon", From c257557b37b25da22343c14fe647d7c0fe0dd0f6 Mon Sep 17 00:00:00 2001 From: Dan Rosser Date: Sat, 3 Oct 2026 16:17:18 +1000 Subject: [PATCH 2/2] ios.toolchain: sync deployment defaults with apothecary#610 Match openframeworks/apothecary#610: same default-comment wording and DEPLOYMENT_TARGET doc line, and the Mac Catalyst macOS fallback (CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET) 10.15 -> 12.0. --- .../CMake/toolchain/ios.toolchain.cmake | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/libs/openFrameworksCompiled/project/CMake/toolchain/ios.toolchain.cmake b/libs/openFrameworksCompiled/project/CMake/toolchain/ios.toolchain.cmake index 2833be390a2..db03b135d79 100644 --- a/libs/openFrameworksCompiled/project/CMake/toolchain/ios.toolchain.cmake +++ b/libs/openFrameworksCompiled/project/CMake/toolchain/ios.toolchain.cmake @@ -88,7 +88,7 @@ # CMAKE_OSX_SYSROOT, but can also be manually specified (although this should # not be required). # -# DEPLOYMENT_TARGET: Minimum SDK version to target. Default 6.0 on watchOS, 13.0 on tvOS+iOS/iPadOS, 11.0 on macOS, 1.0 on visionOS +# DEPLOYMENT_TARGET: Minimum SDK version to target. Default 9.0 on watchOS, 18.0 on tvOS, 15.0 on iOS/iPadOS+Mac Catalyst, 12.0 on macOS, 1.0 on visionOS # # NAMED_LANGUAGE_SUPPORT: # ON (default) = Will require "enable_language(OBJC) and/or enable_language(OBJCXX)" for full OBJC|OBJCXX support @@ -258,28 +258,28 @@ set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL # Specify the minimum version of the deployment target. if(NOT DEFINED DEPLOYMENT_TARGET) if (PLATFORM MATCHES "WATCHOS") - # Unless specified, watchOS 9.0 is used by default as minimum target version (Xcode 27 minimum). + # Unless specified, SDK version 9.0 is used by default as minimum target version (watchOS). set(DEPLOYMENT_TARGET "9.0") elseif(PLATFORM STREQUAL "MAC") - # Unless specified, macOS 12.0 is used by default as the minimum target version (Xcode 27 minimum). + # Unless specified, SDK version 12.0 (Monterey) is used by default as the minimum target version (macOS on x86). set(DEPLOYMENT_TARGET "12.0") elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "SIMULATOR64_VISIONOS") - # Unless specified, visionOS 1.0 is used by default as minimum target version. + # Unless specified, SDK version 1.0 is used by default as minimum target version (visionOS). set(DEPLOYMENT_TARGET "1.0") elseif(PLATFORM STREQUAL "MAC_ARM64") - # Unless specified, macOS 12.0 is used by default as the minimum target version (macOS on arm). + # Unless specified, SDK version 12.0 (Monterey) is used by default as the minimum target version (macOS on arm). set(DEPLOYMENT_TARGET "12.0") elseif(PLATFORM STREQUAL "MAC_UNIVERSAL") - # Unless specified, macOS 12.0 is used by default as minimum target version for universal builds. + # Unless specified, SDK version 12.0 (Monterey) is used by default as minimum target version for universal builds. set(DEPLOYMENT_TARGET "12.0") elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64") - # Unless specified, iOS 15.0 (macOS 12.0) is used by default as the minimum target version (Mac Catalyst). + # Unless specified, SDK version 15.0 is used by default as the minimum target version (Mac Catalyst). set(DEPLOYMENT_TARGET "15.0") elseif(PLATFORM MATCHES "TVOS") - # Unless specified, tvOS 18.0 is used by default as the minimum target version. + # Unless specified, SDK version 18.0 is used by default as the minimum target version (tvOS). set(DEPLOYMENT_TARGET "18.0") else() - # Unless specified, iOS 15.0 is used by default as the minimum target version (Xcode 27 minimum). + # Unless specified, SDK version 15.0 is used by default as the minimum target version (iOS). set(DEPLOYMENT_TARGET "15.0") endif() message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!") @@ -547,7 +547,7 @@ if(CMAKE_GENERATOR MATCHES "Xcode" AND PLATFORM_INT MATCHES "^MAC_CATALYST") set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "macosx") set(CMAKE_XCODE_ATTRIBUTE_SUPPORTS_MACCATALYST "YES") if(NOT DEFINED MACOSX_DEPLOYMENT_TARGET) - set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "10.15") + set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "12.0") else() set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}") endif()