Closed akien-mga closed 1 month ago
The decision was not made in the PR, but there was a decision made to require C++17, implemented in #3163. std::filesystem::absolute
is a C++17 feature, and the addition of this followed that policy. The versions of macOS and iOS affected are also no longer supported by Apple and are over 4 years old by now.
Also, given the discussion on the Godot Engine PR that indicates that the Vulkan backend doesn't work work with the older OS versions impacted by this issue, I am curious to hear about how you are using glslang with OpenGL, or whether you really need it in that case.
The decision was not made in the PR, but there was a decision made to require C++17, implemented in #3163.
std::filesystem::absolute
is a C++17 feature, and the addition of this followed that policy. The versions of macOS and iOS affected are also no longer supported by Apple and are over 4 years old by now.
That's fair. It's actually surprising that Apple doesn't support this API in iOS 12.0 and macOS 10.14, when those otherwise seem to support all C++17 features Godot has been using for years now. So in my experience that's the first C++17 feature I find unsupported there (but we don't use much of the STL templates).
For now I could easily hack the removal of these two std::filesystem::absolute
calls to preserve compatibility, until we actually decide to drop support for the 2% tail end of the Apple market.
Also, given the discussion on the Godot Engine PR that indicates that the Vulkan backend doesn't work work with the older OS versions impacted by this issue, I am curious to hear about how you are using glslang with OpenGL, or whether you really need it in that case.
Godot also has an OpenGL backend, which doesn't use glslang, but both are compiled in the same binary. So we're still compiling glslang for older macOS and iOS releases that should run OpenGL games made with Godot successfully.
I think keeping your hack downstream is probably the way to go if it's not too much trouble, given everything you've mentioned.
3467 introduced uses of
std::filesystem::absolute
, but the feature is not supported on macOS < 10.15 and iOS < 13.0.Builds targeting older min versions (in my case - Godot Engine - it's macOS 10.13 for x86_64 and iOS 12.0) fail with these errors:
I don't see discussion in the PR that dropping support for these older macOS and iOS versions was intentional, so this was probably an oversight?