AAX + XCode 12 Unknown Platform/OS/Compiler workaround + FR

Hi guys,

we noticed that if you try to build the AAX SDK 2.3.2 or any AAX plugin using XCode 12.x (either on Intel or a Silicon machine) you get these errors:

Unknown Platform
Unknown OS
Unknown Compiler

A workaround is to manually change the architecture on both Project and Targets to x86_64 and removing the $(ARCHS_STANDARD) variable from the list. The problem is that we have to manually do this step each time we save the projucer file, since selecting “64-bit Intel” is not working in this case.

Can we have a sort of “Force x86_64” entry on the OSX Architecture menu on Projucer that will replace the $(ARCHS_STANDARD) with x86_64?

Thanks!

2 Likes

You can use the “Valid Architectures” setting of the macOS exporter to tweak which architectures will be built. Xcode will build the intersection of this and the main architecture setting, so selecting just x86_64 will only build Intel 64-bit.

Thanks Ed. I was on 6.0.1 so I hadn’t that option on my Projucer. Updated to 6.0.5 and it’s there.

I have a similar, related issue.

Can you think of a way to exclude arm64 architecture just for the AAX project?

I’d ideally like to build VST and AU as universal arm64 and x86_64 and build the AAX as x86_64 only.
In the plugin.xcodeproj target settings I can set Architectures> Excluded Architectures arm64e and arm64

However I can’t find a way to get that out of projucer, nor can I find a way to call xcodebuild with that option from the command line without affecting the VST(3) and AU too.

Thanks in advance for any suggestions.

Yeah, the problem is that the full UB2 deployment requires Intel only for AAX and standard archs for everything else. Since we can’t delineate architecture by build target, we have to enter the Excluded Architectures for every Projucer project render, for both release and demo.

It is, to not put too fine a point on it, quite annoying. I have 22 products, so I have to do this 44 times for a full build.

You can just patch the AAX library source code to build on arm64. Due to NDA I can’t tell you how, but it’s just a few lines or changes that are needed. Then you can build normally including AAX. If you don’t like untested arm64 parts in your UB2s you could still strip the aax arm64 code away afterwards automatically, but it does make build scripts easier and will be needed in the far future anyway when PT becomes Apple Silicon compatible.

1 Like

Yeah, not going to patch the AAX SDK to ship a format nobody can use, and we can’t test. That is bad business.

Not reading my post fully won’t help either. You can strip the currently useless and potentially not working arm64 aax using lipo after the build. Such an extra step is much easier to add than modifiying ProJucer for a case that won’t be needed in the future.

2 Likes

oh never thought about lipo and that could be a good trick. Thanks @pflugshaupt!

In SR’s JUCE branch we’ve set AAX to build only for x86_64 for now https://github.com/soundradix/JUCE/commit/da1c712606256275dcdd807467b805a38e26587c

2 Likes

+1 for updating Projucer to build AAX as x86_64 only for the time being. I don’t think Avid will be supporting ARM anytime soon, and it’s a small change to the Projucer. It could easily be removed once Avid supports ARM.

1 Like