From c69c6913f181f572929a78906910b9a43c601ac8 Mon Sep 17 00:00:00 2001 From: Hanchin Hsieh Date: Fri, 20 Mar 2026 23:37:30 +0800 Subject: [PATCH] feat(build/luamake): support audio --- clibs/soloud/make.lua | 28 ++++++++++++++++++++++++++++ clibs/soluna/make.lua | 4 +++- make.lua | 2 ++ src/soloudone.cpp | 10 +++++++++- 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 clibs/soloud/make.lua diff --git a/clibs/soloud/make.lua b/clibs/soloud/make.lua new file mode 100644 index 0000000..8516f88 --- /dev/null +++ b/clibs/soloud/make.lua @@ -0,0 +1,28 @@ +local lm = require "luamake" + +lm.rootdir = lm.basedir .. "/3rd/soloud" + +lm:source_set "soloud_src" { + sources = { + lm.basedir .. "/src/soloudone.cpp", + }, + includes = { + "include", + "src", + }, + windows = { + defines = { + "WITH_WINMM=1", + }, + }, + macos = { + defines = { + "WITH_COREAUDIO=1", + }, + }, + linux = { + defines = { + lm.platform == "emcc" and "WITH_SDL2_STATIC=1" or "WITH_ALSA=1", + }, + }, +} diff --git a/clibs/soluna/make.lua b/clibs/soluna/make.lua index ae29550..1e3397d 100644 --- a/clibs/soluna/make.lua +++ b/clibs/soluna/make.lua @@ -39,10 +39,11 @@ lm:source_set "soluna_src" { includes = { "build", "src", - "3rd/lua", "3rd", + "3rd/lua", "3rd/yoga", "3rd/zlib", + "3rd/soloud/include", }, clang = { sources = lm.os == "macos" and { @@ -52,6 +53,7 @@ lm:source_set "soluna_src" { "-x objective-c", }, frameworks = lm.os == "macos" and { + "AudioToolbox", "IOKit", "CoreText", "CoreFoundation", diff --git a/make.lua b/make.lua index bc23894..05e81a1 100644 --- a/make.lua +++ b/make.lua @@ -87,6 +87,7 @@ lm:conf { "-pthread", "-fPIC", "--use-port=emdawnwebgpu", + "-s USE_SDL=2", }, links = { "idbfs.js", @@ -99,6 +100,7 @@ lm:conf { "-s FORCE_FILESYSTEM=1", '-s EXPORTED_RUNTIME_METHODS=\'["FS","FS_createPath","FS_createDataFile","IDBFS"]\'', "-s USE_PTHREADS=1", + "-s USE_SDL=2", "-s PTHREAD_POOL_SIZE='Math.max(2,navigator.hardwareConcurrency)'", "-s PTHREAD_POOL_SIZE_STRICT=2", lm.mode == "debug" and "-s ASSERTIONS=2", diff --git a/src/soloudone.cpp b/src/soloudone.cpp index e3942c2..08e0688 100644 --- a/src/soloudone.cpp +++ b/src/soloudone.cpp @@ -37,7 +37,15 @@ #endif +#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) #include "backend/winmm/soloud_winmm.cpp" +#elif defined(__APPLE__) +#include "backend/coreaudio/soloud_coreaudio.cpp" +#elif defined(__linux__) +#include "backend/alsa/soloud_alsa.cpp" +#elif defined(__EMSCRIPTEN__) +#include "backend/sdl2_static/soloud_sdl2_static.cpp" +#endif extern "C" { #include "audiosource/wav/stb_vorbis.c" @@ -60,4 +68,4 @@ extern "C" { #include "audiosource/speech/tts.cpp" #endif -#include "soloudcapi.h" \ No newline at end of file +#include "soloudcapi.h"