68 lines
1.3 KiB
C++
68 lines
1.3 KiB
C++
#pragma once
|
|
|
|
namespace lt {
|
|
|
|
enum class Platform : uint8_t
|
|
{
|
|
/** The GNU/Linux platform.
|
|
* Tested on the following distros: arch-x86_64
|
|
* @note: Named like so because `linux` is a built-in identifier.
|
|
* */
|
|
gnu_linux,
|
|
|
|
/**
|
|
* The Microsoft Windows(tm) platform.
|
|
* Tested on the following architectures: x86_64
|
|
*/
|
|
windows,
|
|
|
|
/**
|
|
* The apple's macOS platform.
|
|
* Currently not supported.
|
|
*/
|
|
mac,
|
|
};
|
|
|
|
/** The compiler that was used for compiling the project. */
|
|
enum class Compiler : uint8_t
|
|
{
|
|
clang,
|
|
gcc,
|
|
msvc,
|
|
apple_clang,
|
|
};
|
|
|
|
namespace constants {
|
|
|
|
#if defined(LIGHT_PLATFORM_WINDOWS)
|
|
#define lt_win(x)
|
|
constexpr auto platform = Platform::windows;
|
|
constexpr auto platform_name = "windows";
|
|
|
|
#undef LIGHT_PLATFORM_WINDOWS
|
|
|
|
#elif defined(LIGHT_PLATFORM_LINUX)
|
|
constexpr auto platform = Platform::gnu_linux;
|
|
constexpr auto platform_name = "gnu_linux";
|
|
|
|
#elif defined(LIGHT_PLATFORM_MAC)
|
|
#define lt_mac(x) x
|
|
constexpr auto platform = Platform::mac;
|
|
constexpr auto platform_name = "mac";
|
|
|
|
#else
|
|
#error "Unsupported platform: Unknown"
|
|
|
|
#endif
|
|
|
|
#ifdef __clang__
|
|
constexpr auto compiler = Compiler::clang;
|
|
constexpr auto compiler_name = "clang";
|
|
|
|
/** @todo(Light): insert the full identifier, including version information and such */
|
|
constexpr auto full_compiler_identifier = "clang";
|
|
#endif
|
|
|
|
} // namespace constants
|
|
|
|
} // namespace lt
|