diff --git a/include/misc/Platform.h b/include/misc/Platform.h new file mode 100644 index 0000000..11d7725 --- /dev/null +++ b/include/misc/Platform.h @@ -0,0 +1,54 @@ +#pragma once + +namespace td { +namespace utils { + +enum class Os { + Windows = 0, + Linux, + Android, + Unknown, +}; + +enum class Architecture { + x86_64 = 0, + x86, + Arm64, + Armhf, + Unknown, +}; + +inline Os getSystemOs(){ +#if defined(_WIN32) || defined(_WIN64) + return Os::Windows; +#elif defined(__ANDROID__) + return Os::Android; +#elif defined(__unix__) + return Os::Linux; +#else + #pragma message ("Target OS unknown or unsupported !") + return Os::Unknown; +#endif +} + +inline Architecture getSystemArchitecture(){ +#if defined(_WIN64) + return Architecture::x86_64; +#elif defined(_WIN32) + return Architecture::x86; +#elif defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) + return Architecture::x86_64; +#elif defined(_M_IX86) || defined(_X86_) || defined(i386) || defined(__i386) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) + return Architecture::x86; +#elif defined(__aarch64__) + return Architecture::Arm64; +#elif defined(__arm__) || defined(_M_ARM) + return Architecture::Armhf; +#else + #pragma message ("Target CPU architecture unknown or unsupported !") + return Architecture::Unknown; +#endif +} + +} // namespace utils +} // namespace td