Skip to content

Commit 1a1f1fb

Browse files
committed
Allow disabling of std::filesystem in CMake.
In particular, disable its usage on MinGW running on not-Windows because the version in Debian Buster has a bug.
1 parent 380849a commit 1a1f1fb

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/CMakeLists.txt

+10
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,16 @@ option(
5353
"Enable exception handling in the loader. Leave this on unless your standard library is built to not throw."
5454
ON
5555
)
56+
57+
set(BUILD_WITHOUT_STD_FILESYSTEM_DEFAULT OFF)
58+
if(MINGW)
59+
# Debian 10's MinGW has a bug in the experimental filesystem support
60+
# and MinGW on Windows doesn't apparently have any?
61+
set(BUILD_WITHOUT_STD_FILESYSTEM_DEFAULT ON)
62+
endif()
63+
option(BUILD_WITHOUT_STD_FILESYSTEM "Force building without std::[experimental::]filesystem."
64+
${BUILD_WITHOUT_STD_FILESYSTEM_DEFAULT})
65+
5666
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
5767
option(DYNAMIC_LOADER "Build the loader as a .dll library" OFF)
5868
else()

src/loader/CMakeLists.txt

+6
Original file line numberDiff line numberDiff line change
@@ -222,12 +222,18 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
222222
-ffunction-sections
223223
-fdata-sections
224224
)
225+
if(NOT BUILD_WITHOUT_STD_FILESYSTEM)
226+
target_link_libraries(openxr_loader PRIVATE stdc++fs)
227+
endif()
225228
# For GCC version 7.1 or greater, we need to disable the implicit fallthrough warning since
226229
# there's no consistent way to satisfy all compilers until they all accept the C++17 standard
227230
if(CMAKE_COMPILER_IS_GNUCC AND NOT (CMAKE_CXX_COMPILER_VERSION LESS 7.1))
228231
target_compile_options(openxr_loader PRIVATE -Wimplicit-fallthrough=0)
229232
endif()
230233
endif()
234+
if(BUILD_WITHOUT_STD_FILESYSTEM)
235+
target_compile_definitions(openxr_loader PRIVATE DISABLE_STD_FILESYSTEM)
236+
endif()
231237

232238
install(
233239
TARGETS openxr_loader

0 commit comments

Comments
 (0)