gradle / gradle-native

The home of Gradle's support for natively compiled languages
https://blog.gradle.org/introducing-the-new-cpp-plugins
Apache License 2.0
92 stars 8 forks source link

32-bit development on macOS is removed in Xcode 10/Mojave #939

Open big-guy opened 5 years ago

big-guy commented 5 years ago

If you try to build 32-bit on macOS Mojave/10.14 with Xcode 10, you'll get a "deprecated" warning, but the SDKs included with Xcode 10 no longer contain 32-bit versions and the build will fail.

Apple's guidance says...

The macOS 10.14 SDK no longer contains support for compiling 32-bit applications. If developers need to compile for i386, Xcode 9.4 or earlier is required. (39858111)

https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes?language=objc

We have a few tests that expect to be able to build both 32-bit and 64-bit, so we may need to start making these things more sophisticated (e.g., a precondition like @Requires(TestPrecondition.SUPPORTS_32_AND_64)) or make our testing infrastructure support multiple Xcode/SDK installations.

I would probably go the precondition route and keep macOS 64-bit only.

lacasseio commented 5 years ago

I agree with multiple installation. One thing I would be careful is dropping support too soon without a community way to "support" such scenario. This is true for lots of other support we have simply because some companies are often stuck with supporting really old scenarios.

That isn't to say that it should be something we can't move forward with. As adoption moves forward, those could be required. We can defer such work until we have knowledge that it's required and used by our users.

big-guy commented 5 years ago

I believe all non-macOS software has always been/must be 64-bit only. Mojave is the last version of the OS that will support 32-bit applications, so it's a dying platform.

The "proper" fix is to model the SDKs and then we don't necessarily care about what is supported as long as someone can wire something up. I think for all practical purposes, we could assume try to assume 64-bit only and see how much that limits our test coverage.