Error building iOS for device in Release mode


#1

Hey all. I’m getting an error when building my iOS project, but only in specific circumstances. Specifically, if I build in Debug or Release for the Simulator (running iOS 11), I have no problems. If I build in Debug mode for my iPhone SE (iOS 11), no problems. If I build in Release mode for my iPhone SE, I get the following build error:

Aligned allocation function of type 'void *(std::size_t, std::align_val_t)' is only available on iOS 11 or newer.
and
Aligned deallocation function of type 'void (void *, std::align_val_t) noexcept' is only available on iOS 11 or newer.

Coming from the following block in juce_Singleton.h:

    Type* getWithoutChecking()
    {
        if (instance == nullptr)
        {
            auto newObject = new Type(); // I think it's the `new` right here causing the problem
            instance = newObject;
        }

        return instance;
    }

I can get around the problem and successfully build in Release mode for my device if I set the iOS Deployment Target option in Projucer to 11.0 for my Release configuration, but I find it interesting that this is only happening when I try to build for my device, and not when I build for Simulator. Also, ideally, I would like to support more than iOS 11+.

What are my options here? Is this a bugfix in JUCE? Or a constraint on my end that I just have to deal with? Thanks!

Edit: For reference, I am building against JUCE master@06c3674.
Edit: More info, seems to be stemming from the ContentSharer here– https://github.com/WeAreROLI/JUCE/blob/master/modules/juce_gui_basics/filebrowser/juce_ContentSharer.h#L41