summaryrefslogtreecommitdiff
path: root/thirdparty/openxr/src/common/stdfs_conditions.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/openxr/src/common/stdfs_conditions.h')
-rw-r--r--thirdparty/openxr/src/common/stdfs_conditions.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/thirdparty/openxr/src/common/stdfs_conditions.h b/thirdparty/openxr/src/common/stdfs_conditions.h
new file mode 100644
index 0000000000..6dc18cc620
--- /dev/null
+++ b/thirdparty/openxr/src/common/stdfs_conditions.h
@@ -0,0 +1,45 @@
+// Copyright (c) 2017-2022, The Khronos Group Inc.
+// Copyright (c) 2017 Valve Corporation
+// Copyright (c) 2017 LunarG, Inc.
+//
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
+#ifndef _STDFS_CONDITIONS_H
+#define _STDFS_CONDITIONS_H
+
+// If the C++ macro is set to the version containing C++17, it must support
+// the final C++17 package
+#if __cplusplus >= 201703L
+#define USE_EXPERIMENTAL_FS 0
+#define USE_FINAL_FS 1
+
+#elif defined(_MSC_VER) && _MSC_VER >= 1900
+
+#if defined(_HAS_CXX17) && _HAS_CXX17
+// When MSC supports c++17 use <filesystem> package.
+#define USE_EXPERIMENTAL_FS 0
+#define USE_FINAL_FS 1
+#endif // !_HAS_CXX17
+
+// GCC supports the experimental filesystem items starting in GCC 6
+#elif (__GNUC__ >= 6)
+#define USE_EXPERIMENTAL_FS 1
+#define USE_FINAL_FS 0
+
+// If Clang, check for feature support
+#elif defined(__clang__) && (__cpp_lib_filesystem || __cpp_lib_experimental_filesystem)
+#if __cpp_lib_filesystem
+#define USE_EXPERIMENTAL_FS 0
+#define USE_FINAL_FS 1
+#else
+#define USE_EXPERIMENTAL_FS 1
+#define USE_FINAL_FS 0
+#endif
+
+// If all above fails, fall back to standard C++ and OS-specific items
+#else
+#define USE_EXPERIMENTAL_FS 0
+#define USE_FINAL_FS 0
+#endif
+
+#endif // !_STDFS_CONDITIONS_H