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?
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.
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.
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.
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.
+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.
Guys, we are basically near May and still there’s no option to build AAX for x84 only. It’s just a couple of rows to be added in the exporter. It shouldn’t be so difficult to add that as an option. Please!
Build the library as usual, both Debug and Release.
For the JUCE plugins, I patched my Projucer as @yairadix shown above. I’ve rebuilt Projucer and set the projects to have all the architectures enabled in the XCode Exporter
On our side we have added a script for set on “Excluded Architectures” arm64e and arm64 (only for AAX target).
I don’t know if it’s the best way but it’s the only way I’ve found: