This patch is more meant as a proof-of-concept for T90379, although OTOH if there are no bigger objections, this could already be reviewed properly. The changes to the existing BLI code are more for initial testing. They should be committed separately and covered well in unit tests to avoid regressions.
- Add ghc::filesystem to extern/ as platform compatible replacement for std::filesystem.
- Add Windows specific code to avoid issues with including Windows.h.
- Port storage.cc to C++.
- Port some functions from storage.cc to use ghc::filesystem internally.
- General cleanup related to the changes.
Some additional things I did that could use feedback:
- Add USE_CPP_FILESYSTEM compile option to storage.cc, to keep legacy code around for testing.
- Add blender::bli::filesystem as alias for ghc::filesystem. That should make the ghc -> std transition easier later on since we can just change this alias.
- We could also introduce a way to switch between std::filesystem and ghc::filesystem at compile time.