diff --git a/.github/workflows/ci-godot-iap.yml b/.github/workflows/ci-godot-iap.yml
index 77873dc20..805825457 100644
--- a/.github/workflows/ci-godot-iap.yml
+++ b/.github/workflows/ci-godot-iap.yml
@@ -69,6 +69,24 @@ jobs:
test -f addons/godot-iap/godot_iap.gd
echo "All required plugin files exist"
+ # The same [configuration] block is written in three places: this
+ # tracked file, the Makefile that regenerates it, and the release
+ # workflow that builds the zip. They drifted once (#366), so pin them.
+ - name: Verify GDExtension platform gating
+ run: |
+ EXT=addons/godot-iap/bin/godot_iap.gdextension
+ RELEASE=$GITHUB_WORKSPACE/.github/workflows/release-godot.yml
+ grep -qx 'include_tags = \["ios", "macos"\]' "$EXT"
+ grep -q "printf '%s\\\\n' 'include_tags = \[\"ios\", \"macos\"\]'" Makefile
+ grep -qF 'include_tags = ["ios", "macos"]' "$RELEASE"
+ grep -qF 'include_tags = ["ios"]' "$RELEASE"
+ if git -C "$GITHUB_WORKSPACE" grep -nE 'supported_platforms[[:space:]]*=' \
+ -- . ':!libraries/godot-iap/SwiftGodot'; then
+ echo "supported_platforms is not a Godot .gdextension key; use include_tags"
+ exit 1
+ fi
+ echo "GDExtension platform gating is consistent"
+
- name: Verify Android plugin files exist
run: |
test -f android/build.gradle.kts
diff --git a/.github/workflows/release-godot.yml b/.github/workflows/release-godot.yml
index 5c5d2f9ad..9f8c7a26b 100644
--- a/.github/workflows/release-godot.yml
+++ b/.github/workflows/release-godot.yml
@@ -371,7 +371,7 @@ jobs:
[configuration]
entry_symbol = "godot_iap_entry_point"
compatibility_minimum = "4.3"
- supported_platforms = ["ios", "macos"]
+ include_tags = ["ios", "macos"]
[libraries]
ios.arm64 = "ios/GodotIap.framework/GodotIap"
@@ -388,7 +388,7 @@ jobs:
[configuration]
entry_symbol = "godot_iap_entry_point"
compatibility_minimum = "4.3"
- supported_platforms = ["ios"]
+ include_tags = ["ios"]
[libraries]
ios.arm64 = "ios/GodotIap.framework/GodotIap"
@@ -462,12 +462,12 @@ jobs:
test -d "$VERIFY_DIR/addons/godot-iap/bin/ios/SwiftGodotRuntime.framework"
bash scripts/verify-ios-toolchain.sh "$VERIFY_DIR/addons/godot-iap/bin/ios"
if [ "$NOTARIZE_MACOS" = "true" ]; then
- grep -q '^supported_platforms = \["ios", "macos"\]' "$VERIFY_DIR/addons/godot-iap/bin/godot_iap.gdextension"
+ grep -q '^include_tags = \["ios", "macos"\]' "$VERIFY_DIR/addons/godot-iap/bin/godot_iap.gdextension"
grep -q '^macos\.' "$VERIFY_DIR/addons/godot-iap/bin/godot_iap.gdextension"
codesign --verify --deep --strict --verbose=2 "$VERIFY_DIR/addons/godot-iap/bin/macos/SwiftGodotRuntime.framework"
codesign --verify --deep --strict --verbose=2 "$VERIFY_DIR/addons/godot-iap/bin/macos/GodotIap.framework"
else
- grep -q '^supported_platforms = \["ios"\]' "$VERIFY_DIR/addons/godot-iap/bin/godot_iap.gdextension"
+ grep -q '^include_tags = \["ios"\]' "$VERIFY_DIR/addons/godot-iap/bin/godot_iap.gdextension"
test ! -d "$VERIFY_DIR/addons/godot-iap/bin/macos"
if grep -q '^macos\.' "$VERIFY_DIR/addons/godot-iap/bin/godot_iap.gdextension"; then
echo "Error: default release zip must not declare macOS libraries"
diff --git a/libraries/godot-iap/.claude/guides/03-ios-plugin.md b/libraries/godot-iap/.claude/guides/03-ios-plugin.md
index fe674b297..08452de56 100644
--- a/libraries/godot-iap/.claude/guides/03-ios-plugin.md
+++ b/libraries/godot-iap/.claude/guides/03-ios-plugin.md
@@ -40,7 +40,7 @@ Godot export doesn't embed frameworks automatically. The `scripts/fix_ios_embed.
[configuration]
entry_symbol = "godot_iap_entry_point"
compatibility_minimum = "4.3"
-supported_platforms = ["ios", "macos"]
+include_tags = ["ios", "macos"]
[libraries]
ios.arm64 = "ios/GodotIap.framework/GodotIap"
diff --git a/libraries/godot-iap/Makefile b/libraries/godot-iap/Makefile
index c0654c6e2..032d09726 100644
--- a/libraries/godot-iap/Makefile
+++ b/libraries/godot-iap/Makefile
@@ -175,7 +175,7 @@ macos-build:
printf '%s\n' '[configuration]'; \
printf '%s\n' 'entry_symbol = "godot_iap_entry_point"'; \
printf '%s\n' 'compatibility_minimum = "4.3"'; \
- printf '%s\n' 'supported_platforms = ["ios", "macos"]'; \
+ printf '%s\n' 'include_tags = ["ios", "macos"]'; \
printf '\n%s\n' '[libraries]'; \
printf '%s\n' 'ios.arm64 = "ios/GodotIap.framework/GodotIap"'; \
printf '%s\n' 'macos.arm64 = "macos/GodotIap.framework/GodotIap"'; \
diff --git a/libraries/godot-iap/addons/godot-iap/bin/godot_iap.gdextension b/libraries/godot-iap/addons/godot-iap/bin/godot_iap.gdextension
index 666afef8d..9b5473ad8 100644
--- a/libraries/godot-iap/addons/godot-iap/bin/godot_iap.gdextension
+++ b/libraries/godot-iap/addons/godot-iap/bin/godot_iap.gdextension
@@ -1,7 +1,7 @@
[configuration]
entry_symbol = "godot_iap_entry_point"
compatibility_minimum = "4.3"
-supported_platforms = ["ios", "macos"]
+include_tags = ["ios", "macos"]
[libraries]
ios.arm64 = "ios/GodotIap.framework/GodotIap"
diff --git a/packages/docs/src/pages/docs/setup/godot.tsx b/packages/docs/src/pages/docs/setup/godot.tsx
index 43b41b888..46d69f863 100644
--- a/packages/docs/src/pages/docs/setup/godot.tsx
+++ b/packages/docs/src/pages/docs/setup/godot.tsx
@@ -659,6 +659,46 @@ func _on_purchase_error(error):
iOS: Xcode Framework Embedding and run{' '}
fix_ios_embed.sh.
+ The bundled GDExtension ships Apple libraries only, so editors on
+ Windows and Linux log{' '}
+
+ No GDExtension library found for current OS and architecture
+ {' '}
+ each time the project is scanned. Android is unaffected: it loads the
+ AAR plugin from addons/godot-iap/android/, and Android
+ exports keep working.
+
+ Godot 4.8 skips the extension silently, because the addon declares{' '}
+ include_tags. Godot 4.3 through 4.7 have no way to
+ suppress the message (
+
+ godotengine/godot#105615
+
+ ). While developing for Android on a non-Apple machine, rename the
+ file:
+
+ Restore the name before building for iOS or macOS. Those builds
+ require a Mac, so nothing in bin/ is usable from a
+ Windows or Linux machine in the meantime.
+