diff --git a/include/haiku-compat/execinfo.h b/include/linux-compat/execinfo.h similarity index 94% rename from include/haiku-compat/execinfo.h rename to include/linux-compat/execinfo.h index 78e164a..02b7f77 100644 --- a/include/haiku-compat/execinfo.h +++ b/include/linux-compat/execinfo.h @@ -17,6 +17,8 @@ #pragma once +#ifdef __HAIKU__ +// these are missing from HaikuOS #define pthread_setname_np(...) static int pthread_getcpuclockid(pthread_t, clockid_t* const clock_id) @@ -24,6 +26,7 @@ static int pthread_getcpuclockid(pthread_t, clockid_t* const clock_id) *clock_id = CLOCK_REALTIME; return 0; } +#endif static int backtrace(void**, int) { diff --git a/include/haiku-compat/ghc/filesystem.hpp b/include/linux-compat/ghc/filesystem.hpp similarity index 100% rename from include/haiku-compat/ghc/filesystem.hpp rename to include/linux-compat/ghc/filesystem.hpp diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index 5e20650..38e5f32 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -47,7 +47,10 @@ #include "DistrhoPluginUtils.hpp" #include "PluginContext.hpp" #include "extra/Base64.hpp" -#include "extra/SharedResourcePointer.hpp" + +#ifndef DISTRHO_OS_WASM +# include "extra/SharedResourcePointer.hpp" +#endif static const constexpr uint kCardinalStateBaseCount = 3; // patch, screenshot, comment @@ -173,7 +176,9 @@ struct Initializer else #endif { - #if defined(ARCH_MAC) + #if defined(DISTRHO_OS_WASM) + asset::systemDir = "/resources"; + #elif defined(ARCH_MAC) asset::systemDir = "/Library/Application Support/Cardinal"; #elif defined(ARCH_WIN) const std::string commonprogfiles = getSpecialPath(kSpecialPathCommonProgramFiles); @@ -452,7 +457,11 @@ struct ScopedContext { class CardinalPlugin : public CardinalBasePlugin { + #ifdef DISTRHO_OS_WASM + ScopedPointer fInitializer; + #else SharedResourcePointer fInitializer; + #endif #if DISTRHO_PLUGIN_NUM_INPUTS != 0 /* If host audio ins == outs we can get issues for inplace processing. @@ -484,7 +493,11 @@ class CardinalPlugin : public CardinalBasePlugin public: CardinalPlugin() : CardinalBasePlugin(kModuleParameters + kWindowParameterCount + 1, 0, kCardinalStateCount), + #ifdef DISTRHO_OS_WASM + fInitializer(new Initializer(this)), + #else fInitializer(this), + #endif #if DISTRHO_PLUGIN_NUM_INPUTS != 0 fAudioBufferCopy(nullptr), #endif diff --git a/src/Makefile b/src/Makefile index 6f2d182..0ef8eb0 100644 --- a/src/Makefile +++ b/src/Makefile @@ -35,7 +35,9 @@ BASE_FLAGS += -DARCH_LIN endif ifeq ($(HAIKU),true) -BASE_FLAGS += -I../include/haiku-compat +BASE_FLAGS += -I../include/linux-compat +else ifeq ($(WASM),true) +BASE_FLAGS += -I../include/linux-compat endif BASE_FLAGS += -DPRIVATE= diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 83a7b90..027c09c 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -204,7 +204,9 @@ BASE_FLAGS += -Wno-unused-variable # -------------------------------------------------------------- # extra linker flags -ifeq ($(HAIKU),true) +ifeq ($(WASM),true) +LINK_FLAGS += --preload-file=./resources -sALLOW_MEMORY_GROWTH +else ifeq ($(HAIKU),true) LINK_FLAGS += -lpthread else LINK_FLAGS += -pthread