sandbox
Loading...
Searching...
No Matches
target.hpp
1#ifndef LIBSBX_UTILITY_TARGET_HPP_
2#define LIBSBX_UTILITY_TARGET_HPP_
3
4#include <cstdint>
5#include <type_traits>
6
7namespace sbx::utility {
8
10enum class build_configuration : std::uint8_t {
11 debug = 0,
12 release = 1
13}; // enum class build_configuration
14
15#if defined(DEBUG) || !defined(NDEBUG)
16inline constexpr auto build_configuration_v = build_configuration::debug;
17#else
18inline constexpr auto build_configuration_v = build_configuration::release;
19#endif
20
22 inline static constexpr auto value = (build_configuration_v == build_configuration::debug);
23}; // struct is_build_configuration_debug
24
25inline constexpr auto is_build_configuration_debug_v = is_build_configuration_debug::value;
26
28enum class operating_system : std::uint8_t {
29 windows = 0,
30 max = 1,
31 linux = 2,
32 unknown = 3
33}; // enum class operating_system
34
35#if defined(WIN32) || defined(_WIN32)
36inline constexpr auto operating_system_v = operating_system::windows;
37#elif defined(__APPLE__)
38inline constexpr auto operating_system_v = operating_system::mac;
39#elif defined(__linux__) || defined(__linux)
40inline constexpr auto operating_system_v = operating_system::linux;
41#else
42inline constexpr auto operating_system_v = operating_system::unknown;
43#endif
44
46enum class compiler : std::uint8_t {
47 clang = 0,
48 gnu = 1,
49 msc = 2,
50 unknown = 3
51}; // enum class compiler
52
53#if defined(__clang__)
54inline constexpr auto compiler_v = compiler::clang;
55#elif (defined(__GNUC__) || defined(__GNUG__) || defined(__MINGW32__))
56inline constexpr auto compiler_v = compiler::gnu;
57#elif defined(__MSC_VER)
58inline constexpr auto compiler_v = compiler::msc;
59#else
60inline constexpr auto compiler_v = compiler::unknown;
61#endif
62
63#if defined(SBX_CONSTEXPR_ENABLED)
64#define SBX_CONSTEXPR constexpr
65#else
66#define SBX_CONSTEXPR
67#endif
68
69} // namespace sbx::utility
70
71#endif // LIBSBX_UTILITY_TARGET_HPP_