Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .github/workflows/ci-godot-iap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Comment thread
coderabbitai[bot] marked this conversation as resolved.
echo "GDExtension platform gating is consistent"

- name: Verify Android plugin files exist
run: |
test -f android/build.gradle.kts
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/release-godot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
Expand Down Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion libraries/godot-iap/.claude/guides/03-ios-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion libraries/godot-iap/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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"'; \
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[configuration]
entry_symbol = "godot_iap_entry_point"
compatibility_minimum = "4.3"
supported_platforms = ["ios", "macos"]
include_tags = ["ios", "macos"]
Comment thread
coderabbitai[bot] marked this conversation as resolved.

[libraries]
ios.arm64 = "ios/GodotIap.framework/GodotIap"
Expand Down
40 changes: 40 additions & 0 deletions packages/docs/src/pages/docs/setup/godot.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,46 @@ func _on_purchase_error(error):
<a href="#ios-xcode">iOS: Xcode Framework Embedding</a> and run{' '}
<code>fix_ios_embed.sh</code>.
</p>

<h3 id="gdextension-non-apple-editor" className="anchor-heading">
GDExtension errors in the Windows or Linux editor
<a href="#gdextension-non-apple-editor" className="anchor-link">
#
</a>
</h3>
<p>
The bundled GDExtension ships Apple libraries only, so editors on
Windows and Linux log{' '}
<code>
No GDExtension library found for current OS and architecture
</code>{' '}
each time the project is scanned. Android is unaffected: it loads the
AAR plugin from <code>addons/godot-iap/android/</code>, and Android
exports keep working.
</p>
<p>
Godot 4.8 skips the extension silently, because the addon declares{' '}
<code>include_tags</code>. Godot 4.3 through 4.7 have no way to
suppress the message (
<a
href="https://github.com/godotengine/godot/issues/105615"
target="_blank"
rel="noopener noreferrer"
>
godotengine/godot#105615
</a>
). While developing for Android on a non-Apple machine, rename the
file:
</p>
<CodeBlock language="bash">
{`mv addons/godot-iap/bin/godot_iap.gdextension \\
addons/godot-iap/bin/godot_iap.gdextension.disabled`}
</CodeBlock>
<p>
Restore the name before building for iOS or macOS. Those builds
require a Mac, so nothing in <code>bin/</code> is usable from a
Windows or Linux machine in the meantime.
</p>
</section>

<section>
Expand Down
Loading