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

3 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.

7 Likes

Is it the case yet in the latest Juce version?

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!

1 Like

So we just can’t compile the sdk or the AAX on Big Sur?

No, it won’t build for the “Any Mac” configuration. Avid haven’t released an updated SDK yet, so we are forced to make AAX plugin as Intel only.

1 Like

*cough…
Please don’t kick me off the forums…

So do we have an ETA for when this will be fixed?

Ok so I go to the juce export settings, I clicky the x86_64. It no work.

I takey @yairadix file, it no work.

I try High Sierra, it no work.

So I guess, the Juce overlords having mercy on us is the only option.

Or the Avid Overlords, I’m confused.

Are you having problems building the AAX SDK library on Big Sur?
If so, here’s how I did it.

The SDK version is the 2.3.2. Open the xcode project in Libs\AAXLibrary\MacBuild

Set the target as My Mac (Rosetta)
Schermata 2021-05-04 alle 18.12.15

Change the build settings and force x86_64

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

That’s it. In this way I can build Universal 2 Binary for all formats, while AAX builds only for Intel.

I hope this helps.

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:

cat "<project_name>.xcodeproj/project.pbxproj" | sed -e 's/WRAPPER_EXTENSION = aaxplugin;/WRAPPER_EXTENSION = aaxplugin; EXCLUDED_ARCHS = "arm64e arm64";/g' > tmp && mv -v tmp "<project_name>.xcodeproj/project.pbxproj"

maybe this can help also @crandall1

Dude thank you, that was the fix. @lcapozzi

If you are not able to remake the pro juicer like me because I’m an idiot and refuse to learn Cmake.

you can manually change the Xcode settings. Ok Xcode Pace Juce Avid I love you forever.