BR: Undefined symbols ARA::ChannelArrangement::isValidForChannelCount() - Xcode

On the master branch 2b16c1b with the ARA support, compiling an ARA plugin with Xcode fails

Undefined symbols for architecture arm64:
  "ARA::ChannelArrangement::isValidForChannelCount(int) const", referenced from:
      ARA::PlugIn::DocumentController::_validateAudioSourceChannelArrangement(ARA::SizedStructPtr<ARA::ARAAudioSourceProperties>) in juce_audio_plugin_client_ARA.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

It can be reproduced with the ARAPluginDemo using:

cmake . -B cmake-build -DJUCE_BUILD_EXAMPLES=ON -DJUCE_BUILD_EXTRAS=ON -DJUCE_GLOBAL_ARA_SDK_PATH=/My/Path/To/ARA_SDK -G Xcode 

It has been tested with Xcode 13.4.1 (13F100) and ARA_SDK c705003. It seems to work with the makefile system but I didn’t test the generated plugin then and I didn’t try it yet on other OSes. The issue can be fixed by adding to juce_ARA_Wrapper.cpp

#include <ARA_Library/Utilities/ARAChannelArrangement.cpp>

I encounter the same problem now with JUCE 7 on my plugin that was compiled previously with the JUCE fork by Celemony.

2 Likes

The currently supported ARA SDK version is the one on Celemony’s Github under the tag releases/2.1.0.

This should have been stated in the JUCE documentation, and will be fixed soon.

As a stop gap measure I’ll share a command for quickly acquiring the right version of the ARA_SDK

git clone --recursive --branch releases/2.1.0 https://github.com/Celemony/ARA_SDK

2 Likes

Indeed, ARA SDK 2.1.0 fixes the issue! Thank you!