Undefined symbols on _AudioComponentFindNext
oschettler opened this issue · comments
Running make
under macOS (x86), I get
gcc src/algorithms.o src/amy.o src/envelope.o src/delay.o src/filters.o src/oscillators.o src/pcm.o src/partials.o src/libminiaudio-audio.o src/amy-example-esp32.o src/amy-example.o -Wall -lpthread -lm -o amy-example
ld: Undefined symbols:
_AudioComponentFindNext, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioComponentInstanceDispose, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioComponentInstanceNew, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioObjectAddPropertyListener, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioObjectGetPropertyData, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioObjectGetPropertyDataSize, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioObjectRemovePropertyListener, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioObjectSetPropertyData, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioOutputUnitStart, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioOutputUnitStop, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioUnitAddPropertyListener, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioUnitGetProperty, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioUnitGetPropertyInfo, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioUnitInitialize, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioUnitRender, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_AudioUnitSetProperty, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_CFRelease, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
_CFStringGetCString, referenced from:
_ma_context_init__coreaudio in libminiaudio-audio.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [amy-example] Error 1
Probably I need to add Apple specific frameworks, but I don't know how
Ah, found it:
diff --git a/Makefile b/Makefile
index a5c857b..dfba47b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,12 @@
# Makefile for libamy , including an example
TARGET = amy-example amy-message
-LIBS = -lpthread -lm
+LIBS = -lpthread -lm
+
+# on macOS, need to link to AudioUnit, CoreAudio, and CoreFoundation
+ifeq ($(shell uname -s), Darwin)
+LIBS += -framework AudioUnit -framework CoreAudio -framework CoreFoundation
+endif
# on Raspberry Pi, at least under 32-bit mode, libatomic and libdl are needed.
ifeq ($(shell uname -m), armv7l)
Ah yes, this is a Sonoma era bug. We fixed this in Tulip but not yet AMY. Thank you, i'll commit this