This is an automated email from the ASF dual-hosted git repository.

GitToTheHub pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cordova-ios.git


The following commit(s) were added to refs/heads/master by this push:
     new 0b7e76b0 chore(versions): Vary minimum version based on compile SDK 
(#1663)
0b7e76b0 is described below

commit 0b7e76b09d14949a98caba773986c55c4376b09c
Author: Darryl Pogue <[email protected]>
AuthorDate: Wed Sep 23 06:27:23 2026 -0700

    chore(versions): Vary minimum version based on compile SDK (#1663)
    
    * chore(versions): Replace min versions with macros
    
    Xcode is getting more strict about minimum supported OS requirements,
    what used to be a warning about version numbers being out of range is
    being turned into an error.
    
    To avoid needing to raise our actual minimum OS version unnecessarily,
    we can use an Xcode macro that automatically results in the minimum
    supported OS version in the current Xcode version. These macros were
    introduced in Xcode 14, which is older than our minimum Xcode
    requirement.
    
    The end result of this is that the realistic minimum supported OS
    version for a Cordova app will be determined by the Xcode version used
    to build it.
    
    It doesn't seem to care about the minimum version declared in
    Package.swift and whether that's in the range of supported versions or
    not.
    
    I would feel better if there were a way to use this conditionally and
    still set a hardcoded minimum, or a way to see clearly what the
    Xcode-supported minimum is, but I can't see a way to do that without
    delving into complex xcconfig chaining :(
    
    * fix(versions): Vary min version by SDK target
    
    Rather than using the (very unclear) macro for the recommended target
    version, we can explicitly vary the target version based on the SDK
    being used to compile. Since the SDK is tied to the Xcode version, this
    allows us to declare that our minimum iOS version is 13.0, except in
    Xcode 27 where it's 15.0.
    
    Documenting this behaviour is still going to be a pain, but Xcode really
    doesn't seem to want to give us any other choices here.
    
    I left the CordovaTests project still targeting the recommended SDK
    since that's effectively a development project and doesn't impact
    Cordova consumers.
    
    * ci: Add Xcode 27 (beta, for now) to the CI matrix
    
    * fix(Podfile): Set min version to 15.0 for Xcode 27
    
    This seems absolutely awful, but I don't have a better suggestion that
    keeps the Xcodeproj behaviour of determining the version at build-time
    based on the target toolset.
    
    Fixes #1723
---
 .github/workflows/ci.yml                             |  2 +-
 CordovaLib/CordovaLib.xcodeproj/project.pbxproj      | 20 ++++++++------------
 lib/Podfile.js                                       |  6 +++++-
 templates/project/App.xcodeproj/project.pbxproj      | 14 ++++++++------
 .../CordovaTests.xcodeproj/project.pbxproj           |  8 ++------
 5 files changed, 24 insertions(+), 26 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9a867521..823ee41a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -61,7 +61,7 @@ jobs:
 
     strategy:
       matrix:
-        os: [macos-15, macos-26, macos-26-intel]
+        os: [macos-15, macos-26, macos-26-intel, xcode-27]
 
     env:
       CDV_IOS_SIM: ${{ matrix.os == 'macos-15' && 'iPhone 16e' || 'iPhone 17' 
}}
diff --git a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj 
b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
index 47c5a5ca..f1b9f5bd 100644
--- a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
+++ b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
@@ -682,10 +682,7 @@
                                MODULE_VERIFIER_SUPPORTED_LANGUAGES = 
"objective-c objective-c++";
                                MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = 
"gnu11 gnu++14";
                                PUBLIC_HEADERS_FOLDER_PATH = include/Cordova;
-                               SUPPORTED_PLATFORMS = "iphoneos iphonesimulator 
xros xrsimulator";
                                SUPPORTS_MACCATALYST = YES;
-                               TARGETED_DEVICE_FAMILY = "1,2,7";
-                               XROS_DEPLOYMENT_TARGET = 1.0;
                        };
                        name = Debug;
                };
@@ -696,10 +693,7 @@
                                MODULE_VERIFIER_SUPPORTED_LANGUAGES = 
"objective-c objective-c++";
                                MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = 
"gnu11 gnu++14";
                                PUBLIC_HEADERS_FOLDER_PATH = include/Cordova;
-                               SUPPORTED_PLATFORMS = "iphoneos iphonesimulator 
xros xrsimulator";
                                SUPPORTS_MACCATALYST = YES;
-                               TARGETED_DEVICE_FAMILY = "1,2,7";
-                               XROS_DEPLOYMENT_TARGET = 1.0;
                        };
                        name = Release;
                };
@@ -762,6 +756,7 @@
                                GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
                                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+                               "IPHONEOS_DEPLOYMENT_TARGET[sdk=*27.*]" = 15.0;
                                MERGEABLE_LIBRARY = YES;
                                MODULE_VERIFIER_SUPPORTED_LANGUAGES = 
"objective-c objective-c++";
                                MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = 
"gnu11 gnu++14";
@@ -773,6 +768,9 @@
                                SDKROOT = iphoneos;
                                SKIP_INSTALL = YES;
                                STRING_CATALOG_GENERATE_SYMBOLS = YES;
+                               SUPPORTED_PLATFORMS = "iphonesimulator iphoneos 
xrsimulator xros";
+                               TARGETED_DEVICE_FAMILY = "1,2,7";
+                               XROS_DEPLOYMENT_TARGET = 1.0;
                        };
                        name = Debug;
                };
@@ -830,6 +828,7 @@
                                GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
                                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+                               "IPHONEOS_DEPLOYMENT_TARGET[sdk=*27.*]" = 15.0;
                                MERGEABLE_LIBRARY = YES;
                                MODULE_VERIFIER_SUPPORTED_LANGUAGES = 
"objective-c objective-c++";
                                MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = 
"gnu11 gnu++14";
@@ -840,7 +839,10 @@
                                SDKROOT = iphoneos;
                                SKIP_INSTALL = YES;
                                STRING_CATALOG_GENERATE_SYMBOLS = YES;
+                               SUPPORTED_PLATFORMS = "iphonesimulator iphoneos 
xrsimulator xros";
+                               TARGETED_DEVICE_FAMILY = "1,2,7";
                                VALIDATE_PRODUCT = YES;
+                               XROS_DEPLOYMENT_TARGET = 1.0;
                        };
                        name = Release;
                };
@@ -861,12 +863,9 @@
                                MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = 
"gnu11 gnu++14";
                                PRODUCT_BUNDLE_IDENTIFIER = 
org.apache.cordova.Cordova;
                                SKIP_INSTALL = NO;
-                               SUPPORTED_PLATFORMS = "iphoneos iphonesimulator 
xros xrsimulator";
                                SUPPORTS_MACCATALYST = YES;
-                               TARGETED_DEVICE_FAMILY = "1,2,7";
                                VERSIONING_SYSTEM = "apple-generic";
                                VERSION_INFO_PREFIX = "";
-                               XROS_DEPLOYMENT_TARGET = 1.0;
                        };
                        name = Debug;
                };
@@ -887,12 +886,9 @@
                                MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = 
"gnu11 gnu++14";
                                PRODUCT_BUNDLE_IDENTIFIER = 
org.apache.cordova.Cordova;
                                SKIP_INSTALL = NO;
-                               SUPPORTED_PLATFORMS = "iphoneos iphonesimulator 
xros xrsimulator";
                                SUPPORTS_MACCATALYST = YES;
-                               TARGETED_DEVICE_FAMILY = "1,2,7";
                                VERSIONING_SYSTEM = "apple-generic";
                                VERSION_INFO_PREFIX = "";
-                               XROS_DEPLOYMENT_TARGET = 1.0;
                        };
                        name = Release;
                };
diff --git a/lib/Podfile.js b/lib/Podfile.js
index 94aac6cf..79af1377 100644
--- a/lib/Podfile.js
+++ b/lib/Podfile.js
@@ -165,7 +165,11 @@ Podfile.prototype.escapeSingleQuotes = function (string) {
 Podfile.prototype.getTemplate = function () {
     return '# DO NOT MODIFY -- auto-generated by Apache Cordova\n' +
         `${this.sourceToken}\n` +
-        `platform :ios, '${this.minDeploymentTarget}'\n` +
+        `deploymentTarget = '${this.minDeploymentTarget}'\n` +
+        'if deploymentTarget < \'15.0\' && `xcodebuild 
-version`.lines.first.split(\' \')[1].to_i >= 27\n' +
+        '\tdeploymentTarget = \'15.0\'\n' +
+        'end\n' +
+        'platform :ios, deploymentTarget\n' +
         `${this.declarationToken}\n` +
         'target \'App\' do\n' +
         '\tproject \'App.xcodeproj\'\n' +
diff --git a/templates/project/App.xcodeproj/project.pbxproj 
b/templates/project/App.xcodeproj/project.pbxproj
index a81089d5..428a5fce 100755
--- a/templates/project/App.xcodeproj/project.pbxproj
+++ b/templates/project/App.xcodeproj/project.pbxproj
@@ -345,18 +345,21 @@
                                "INSTALL_PATH[sdk=macosx*]" = 
"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
                                "INSTALL_PATH[sdk=xrsimulator*]" = 
"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
                                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+                               "IPHONEOS_DEPLOYMENT_TARGET[sdk=*27.*]" = 15.0;
                                LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
                                MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
                                MTL_FAST_MATH = YES;
                                ONLY_ACTIVE_ARCH = YES;
                                SDKROOT = iphoneos;
                                STRING_CATALOG_GENERATE_SYMBOLS = YES;
+                               SUPPORTED_PLATFORMS = "iphonesimulator iphoneos 
xros xrsimulator";
                                SUPPORTS_MACCATALYST = YES;
                                SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
                                SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG 
$(inherited)";
                                SWIFT_OPTIMIZATION_LEVEL = "-Onone";
-                               TARGETED_DEVICE_FAMILY = "1,2";
+                               TARGETED_DEVICE_FAMILY = "1,2,6,7";
                                VALIDATE_WORKSPACE = NO;
+                               XROS_DEPLOYMENT_TARGET = 1.0;
                        };
                        name = Debug;
                };
@@ -414,16 +417,19 @@
                                "INSTALL_PATH[sdk=macosx*]" = 
"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
                                "INSTALL_PATH[sdk=xrsimulator*]" = 
"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
                                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+                               "IPHONEOS_DEPLOYMENT_TARGET[sdk=*27.*]" = 15.0;
                                LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
                                MTL_ENABLE_DEBUG_INFO = NO;
                                MTL_FAST_MATH = YES;
                                SDKROOT = iphoneos;
                                STRING_CATALOG_GENERATE_SYMBOLS = YES;
+                               SUPPORTED_PLATFORMS = "iphonesimulator iphoneos 
xros xrsimulator";
                                SUPPORTS_MACCATALYST = YES;
                                SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
                                SWIFT_COMPILATION_MODE = wholemodule;
-                               TARGETED_DEVICE_FAMILY = "1,2";
+                               TARGETED_DEVICE_FAMILY = "1,2,6,7";
                                VALIDATE_PRODUCT = YES;
+                               XROS_DEPLOYMENT_TARGET = 1.0;
                        };
                        name = Release;
                };
@@ -455,14 +461,12 @@
                                );
                                PRODUCT_BUNDLE_IDENTIFIER = 
"org.apache.cordova.AppTemplate$(DEVELOPMENT_TEAM)";
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               SUPPORTED_PLATFORMS = "iphoneos iphonesimulator 
xros xrsimulator";
                                SUPPORTS_MACCATALYST = YES;
                                SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
                                SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
                                SWIFT_EMIT_LOC_STRINGS = YES;
                                SWIFT_OBJC_BRIDGING_HEADER = 
"$(TARGET_NAME)/Bridging-Header.h";
                                SWIFT_VERSION = 5.0;
-                               TARGETED_DEVICE_FAMILY = "1,2,6,7";
                        };
                        name = Debug;
                };
@@ -494,14 +498,12 @@
                                );
                                PRODUCT_BUNDLE_IDENTIFIER = 
"org.apache.cordova.AppTemplate$(DEVELOPMENT_TEAM)";
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               SUPPORTED_PLATFORMS = "iphoneos iphonesimulator 
xros xrsimulator";
                                SUPPORTS_MACCATALYST = YES;
                                SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
                                SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
                                SWIFT_EMIT_LOC_STRINGS = YES;
                                SWIFT_OBJC_BRIDGING_HEADER = 
"$(TARGET_NAME)/Bridging-Header.h";
                                SWIFT_VERSION = 5.0;
-                               TARGETED_DEVICE_FAMILY = "1,2,6,7";
                        };
                        name = Release;
                };
diff --git a/tests/CordovaLibTests/CordovaTests.xcodeproj/project.pbxproj 
b/tests/CordovaLibTests/CordovaTests.xcodeproj/project.pbxproj
index 8468dd5d..05701d0a 100644
--- a/tests/CordovaLibTests/CordovaTests.xcodeproj/project.pbxproj
+++ b/tests/CordovaLibTests/CordovaTests.xcodeproj/project.pbxproj
@@ -428,7 +428,7 @@
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
-                               IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+                               IPHONEOS_DEPLOYMENT_TARGET = 
"$(RECOMMENDED_IPHONEOS_DEPLOYMENT_TARGET)";
                                LD_RUNPATH_SEARCH_PATHS = 
"@executable_path/Frameworks";
                                MERGED_BINARY_TYPE = automatic;
                                ONLY_ACTIVE_ARCH = YES;
@@ -487,7 +487,7 @@
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
-                               IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+                               IPHONEOS_DEPLOYMENT_TARGET = 
"$(RECOMMENDED_IPHONEOS_DEPLOYMENT_TARGET)";
                                LD_RUNPATH_SEARCH_PATHS = 
"@executable_path/Frameworks";
                                MERGED_BINARY_TYPE = automatic;
                                ONLY_ACTIVE_ARCH = NO;
@@ -529,7 +529,6 @@
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GENERATE_INFOPLIST_FILE = YES;
                                HEADER_SEARCH_PATHS = "$(inherited)";
-                               IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                                LD_RUNPATH_SEARCH_PATHS = (
                                        "$(inherited)",
                                        "@executable_path/Frameworks",
@@ -562,7 +561,6 @@
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GENERATE_INFOPLIST_FILE = YES;
                                HEADER_SEARCH_PATHS = "$(inherited)";
-                               IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                                LD_RUNPATH_SEARCH_PATHS = (
                                        "$(inherited)",
                                        "@executable_path/Frameworks",
@@ -603,7 +601,6 @@
                                        
"$(BUILT_PRODUCTS_DIR)/include/Cordova/**",
                                );
                                INFOPLIST_FILE = "CordovaTests-Info.plist";
-                               IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                                ONLY_ACTIVE_ARCH = YES;
                                OTHER_LDFLAGS = (
                                        "-all_load",
@@ -640,7 +637,6 @@
                                        
"$(BUILT_PRODUCTS_DIR)/include/Cordova/**",
                                );
                                INFOPLIST_FILE = "CordovaTests-Info.plist";
-                               IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                                ONLY_ACTIVE_ARCH = NO;
                                OTHER_LDFLAGS = (
                                        "-all_load",


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to