Steps needed for M1 compatibility

Hello folks,

I am having a bit hard time understanding the steps of compiling for M1 machines.
What is needed to compile vst3, AU, and AAX plugins for M1 native?

After compiling it for M1, is it going to work on the other none-M1 machines?

Xcode will make a universal binary which contains both intel and arm builds. You donā€™t need to do anything special!

1 Like

But when you build from Xcode, you need to make sure to select ā€œBuild for all Macsā€ instead of ā€œBuild for my Macā€.

Also for AAX you need to disable ARM for time being, see the other threads about AAX:

And if you need external libraries it becomes easily complicatedā€¦

2 Likes

As @daniel says, things quickly get complicated if you are using any external libraries. I just spent the best part of a week rebuilding a load of 3rd party libraries for use in my applications.

1 Like

Thank you very much for this quick responses.:pray:
AAX did not surprise me :smiley:

Iā€™m not sure you even need to do that. Iā€™ve tested both build for all and build for my and the binary comes out the same size on release mode. However the apple documentation does say that when building for a debug build it will only build for the current architecture to save time - but no one should be releasing a debug build anyway!

I think when set to release it follows the project settings no matter what:

Please correct me if I am mistaken however!

@Rory yeah, it took me a while to get going with the AAX library because of the whole universal binary thing. For standard JUCE stuff its nice and straightforward though!

You can build using either option, but you can only debug using the ā€˜Build for my Macā€™ option right?

Removing arm64 architecture only from the AAX target in the Xcode project did it for me. That builds the AAX plugin for Intel only, while all other plugins are built as univeral binaries.

2 Likes