mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-20 05:23:04 +01:00
60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
/*****************************************************************************
|
|
* Copyright (c) 2014-2025 OpenRCT2 developers
|
|
*
|
|
* For a complete list of all authors, please refer to contributors.md
|
|
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
|
*
|
|
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
|
*****************************************************************************/
|
|
|
|
/// @file
|
|
/// This file enables access to std::filesystem as `fs` namespace
|
|
/// or injects third-party drop-in replacement on build configs
|
|
/// where std::filesystem is not available.
|
|
|
|
#pragma once
|
|
|
|
// Find out if std::filesystem is available:
|
|
#if defined(_MSC_VER) // Visual Studio supports <filesystem>
|
|
#define HAVE_STD_FILESYSTEM 1
|
|
#elif defined(__APPLE__) // XCode has the header, but reports error when included.
|
|
#define HAVE_STD_FILESYSTEM 0
|
|
#elif defined(__ANDROID__)
|
|
#define HAVE_STD_FILESYSTEM 1
|
|
#elif defined(__has_include) // For GCC/Clang check if the header exists.
|
|
#if __has_include(<filesystem>)
|
|
#define HAVE_STD_FILESYSTEM 1
|
|
#else
|
|
#define HAVE_STD_FILESYSTEM 0
|
|
#endif
|
|
#else // By default assume not supported.
|
|
#define HAVE_STD_FILESYSTEM 0
|
|
#endif
|
|
|
|
#if HAVE_STD_FILESYSTEM
|
|
#include <filesystem>
|
|
namespace fs = std::filesystem;
|
|
#else
|
|
#ifdef _WIN32
|
|
#ifndef NOMINMAX
|
|
#define NOMINMAX
|
|
#endif
|
|
#ifndef WIN32_LEAN_AND_MEAN
|
|
#define WIN32_LEAN_AND_MEAN
|
|
#endif
|
|
#define BITMAP WIN32_BITMAP
|
|
#define PATTERN WIN32_PATTERN
|
|
#endif
|
|
#include <filesystem.hpp>
|
|
#ifdef _WIN32
|
|
#undef CreateDirectory
|
|
#undef CreateWindow
|
|
#undef GetMessage
|
|
#undef BITMAP
|
|
#undef PATTERN
|
|
#endif
|
|
namespace fs = ghc::filesystem;
|
|
#endif
|
|
|
|
#undef HAVE_STD_FILESYSTEM // Not needed any more, don't make it public.
|