Skip to content
Open
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
6 changes: 5 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,13 @@ jobs:
curl -LO https://github.com/ValveSoftware/steam-audio/releases/download/v4.8.0/steamaudio_4.8.0.zip
unzip steamaudio_4.8.0.zip 'steamaudio/lib/**/*' -d src/lib
cp -r src/lib/steamaudio/lib/osx/* project/addons/godot-steam-audio/bin/
cp src/lib/steamaudio/lib/ios/* project/addons/godot-steam-audio/bin/ios/
- name: build-ios-deps
run: |
make ios-deps
- name: build-ext
run: |
make macos-release
make macos-release && make ios-release
- uses: actions/upload-artifact@v4
with:
name: godot-steam-audio-macos-${{ env.COMMIT_SHORT_SHA }}
Expand Down
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,9 @@
path = src/lib/steamaudio
url = https://github.com/ValveSoftware/steam-audio
branch = 4.8.0
[submodule "src/lib/pffft"]
path = src/lib/pffft
url = https://github.com/marton78/pffft.git
[submodule "src/lib/libmysofa"]
path = src/lib/libmysofa
url = https://github.com/hoene/libmysofa.git
28 changes: 28 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ install-steam-audio:
cp src/lib/steamaudio/lib/osx/* project/addons/godot-steam-audio/bin/
cp src/lib/steamaudio/lib/android-armv8/* project/addons/godot-steam-audio/bin/android/arm64
cp src/lib/steamaudio/lib/android-x64/* project/addons/godot-steam-audio/bin/android/x86_64
cp src/lib/steamaudio/lib/ios/* project/addons/godot-steam-audio/bin/ios/

release:
scons platform=android arch=arm64 target=template_release && scons platform=android arch=x86_64 target=template_release && \
Expand All @@ -28,3 +29,30 @@ macos-release:
cp -r ./project/* ./godot-steam-audio-demo
rm -rf ./godot-steam-audio-demo/addons/godot-steam-audio/bin/libphonon.so.dbg
cp -r ./godot-steam-audio-demo/addons ./godot-steam-audio

ios-deps:
# Build pffft for iOS arm64
IOS_SDK=$$(xcrun --sdk iphoneos --show-sdk-path) && \
xcrun --sdk iphoneos clang -arch arm64 -isysroot "$$IOS_SDK" -miphoneos-version-min=12.0 -O2 -DPFFFT_ENABLE_NEON \
-c src/lib/pffft/pffft.c -o src/lib/pffft/pffft.o && \
xcrun --sdk iphoneos clang -arch arm64 -isysroot "$$IOS_SDK" -miphoneos-version-min=12.0 -O2 -DPFFFT_ENABLE_NEON \
-c src/lib/pffft/pffft_common.c -o src/lib/pffft/pffft_common.o && \
ar rcs project/addons/godot-steam-audio/bin/ios/libpffft.a src/lib/pffft/pffft.o src/lib/pffft/pffft_common.o
# Build libmysofa for iOS arm64
IOS_SDK=$$(xcrun --sdk iphoneos --show-sdk-path) && \
cmake -S src/lib/libmysofa -B src/lib/libmysofa/build-ios \
-DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=arm64 \
-DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 -DCMAKE_OSX_SYSROOT="$$IOS_SDK" \
-DBUILD_TESTS=OFF -DBUILD_SHARED_LIBS=OFF && \
cmake --build src/lib/libmysofa/build-ios --config Release
cp src/lib/libmysofa/build-ios/src/libmysofa.a project/addons/godot-steam-audio/bin/ios/

ios-release: ios-deps
scons platform=ios arch=arm64 target=template_debug && scons platform=ios arch=arm64 target=template_release
cp src/lib/godot-cpp/bin/libgodot-cpp.ios.template_debug.arm64.a project/addons/godot-steam-audio/bin/ios/
cp src/lib/godot-cpp/bin/libgodot-cpp.ios.template_release.arm64.a project/addons/godot-steam-audio/bin/ios/
mkdir -p godot-steam-audio-demo
mkdir -p godot-steam-audio
cp -r ./project/* ./godot-steam-audio-demo
rm -rf ./godot-steam-audio-demo/addons/godot-steam-audio/bin/libphonon.so.dbg
cp -r ./godot-steam-audio-demo/addons ./godot-steam-audio
16 changes: 12 additions & 4 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,22 @@ elif env["platform"] == "android":
env.Append(LIBPATH=[f'{steam_audio_lib_path}/android-x64'])
if env["arch"] == "x86_32":
env.Append(LIBPATH=[f'{steam_audio_lib_path}/android-x32'])
elif env["platform"] == "ios":
env.Append(LIBPATH=[f'{steam_audio_lib_path}/ios'])

if env["target"] in ["editor", "template_debug"]:
doc_data = env.GodotCPPDocData("src/gen/doc_data.gen.cpp", source=Glob("doc_classes/*.xml"))
sources.append(doc_data)

library = env.SharedLibrary(
"project/addons/godot-steam-audio/bin/libgodot-steam-audio{}{}".format(env["suffix"], env["SHLIBSUFFIX"]),
source=sources,
)
if env["platform"] == "ios":
library = env.StaticLibrary(
"project/addons/godot-steam-audio/bin/libgodot-steam-audio{}{}".format(env["suffix"], env["LIBSUFFIX"]),
source=sources,
)
else:
library = env.SharedLibrary(
"project/addons/godot-steam-audio/bin/libgodot-steam-audio{}{}".format(env["suffix"], env["SHLIBSUFFIX"]),
source=sources,
)

Default(library)
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ windows.x86_64.debug = "res://addons/godot-steam-audio/bin/libgodot-steam-audio.
windows.x86_64.release = "res://addons/godot-steam-audio/bin/libgodot-steam-audio.windows.template_release.x86_64.dll"
macos.debug = "res://addons/godot-steam-audio/bin/libgodot-steam-audio.macos.template_debug.universal.dylib"
macos.release = "res://addons/godot-steam-audio/bin/libgodot-steam-audio.macos.template_release.universal.dylib"
ios.arm64.debug = "res://addons/godot-steam-audio/bin/libgodot-steam-audio.ios.template_debug.arm64.a"
ios.arm64.release = "res://addons/godot-steam-audio/bin/libgodot-steam-audio.ios.template_release.arm64.a"

[icons]

Expand Down Expand Up @@ -62,3 +64,15 @@ android.arm64.debug = {
android.arm64.release = {
"res://addons/godot-steam-audio/bin/android/arm64/libphonon.so": ""
}
ios.arm64.debug = {
"res://addons/godot-steam-audio/bin/ios/libphonon.a": "",
"res://addons/godot-steam-audio/bin/ios/libgodot-cpp.ios.template_debug.arm64.a": "",
"res://addons/godot-steam-audio/bin/ios/libpffft.a": "",
"res://addons/godot-steam-audio/bin/ios/libmysofa.a": ""
}
ios.arm64.release = {
"res://addons/godot-steam-audio/bin/ios/libphonon.a": "",
"res://addons/godot-steam-audio/bin/ios/libgodot-cpp.ios.template_release.arm64.a": "",
"res://addons/godot-steam-audio/bin/ios/libpffft.a": "",
"res://addons/godot-steam-audio/bin/ios/libmysofa.a": ""
}
1 change: 1 addition & 0 deletions src/lib/libmysofa
Submodule libmysofa added at 3f4cb6
1 change: 1 addition & 0 deletions src/lib/pffft
Submodule pffft added at d321d0
4 changes: 4 additions & 0 deletions src/server_init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,10 @@ IPLSceneSettings create_scene_cfg(IPLContext ctx) {
OS::get_singleton()->get_name() == "Android") {
SteamAudioConfig::scene_type = IPL_SCENETYPE_DEFAULT;
SteamAudio::log(SteamAudio::log_info, "Embree is not supported on Android, reverting to default scene type.");
} else if (SteamAudioConfig::scene_type == IPL_SCENETYPE_EMBREE &&
OS::get_singleton()->get_name() == "iOS") {
SteamAudioConfig::scene_type = IPL_SCENETYPE_DEFAULT;
SteamAudio::log(SteamAudio::log_info, "Embree is not supported on iOS, reverting to default scene type.");
}

scene_cfg.type = SteamAudioConfig::scene_type;
Expand Down