AU and targeting macOS versions below 10.11

We have an application and we’re trying to target macOS versions below 10.11. I can’t find any documentation that suggests we shouldn’t be able to do that.

However, if I set CMAKE_OSX_DEPLOYMENT_TARGET to e.g. "10.10", the application fails to link due to missing symbols.

Examples of symbols that are not found include _AudioComponentCopyName (available since 10.6), _AudioUnitGetParameter (available since 10.0), _MusicDeviceMIDIEvent (available since 10.0).

Looking at the link command, the only difference between a successful build and a faililng one is this flag: -mmacosx-version-min=10.10, so I’m not sure if it’s a JUCE thing or some other flag that I’m missing. I should be able to target platforms well below 10.11, right?

Has anyone had success doing this?

That’s strange, this should just work.

On my machines (intel macbook running 10.15, M1 mini running Big Sur), running the following commands from the JUCE directory successfully builds and links the requested targets.

cmake -B cmake-build-old -G Ninja -D CMAKE_OSX_DEPLOYMENT_TARGET=10.10 -D JUCE_BUILD_EXAMPLES=ON -D JUCE_BUILD_EXTRAS=ON
cmake --build cmake-build-old --target AudioPluginHost --target DSPModulePluginDemo_AU

Could you try this out on your system? If this fails for you, then the issue is either with JUCE itself, or with your system. If it succeeds, then the problem is likely to be in your particular project.

You should also be aware that AUv3 plugins require a deployment target of at least 10.11, so if your target is an AUv3 that might explain the build failures you’re seeing.

Oh, that must be it!

I forgot that we initially set the application up as a plugin :woozy_face:

This isn’t a cmake question but maybe someone got some nice cheat sheet for building AUv3 for iOS only?

Is there a way in Projucer setting the AUv3 only for iOS while keeping macOS support below 10.11 (not building AUv3 for macOS…)?