shorepine / amy

AMY - the Additive Music synthesizer librarY

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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