65bae5a341
Will be compiled and used in the next commit. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
// 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
|