feat: add platform detection

This commit is contained in:
2021-11-13 13:25:41 +01:00
parent 4c203b921f
commit 7352cf7471

54
include/misc/Platform.h Normal file
View File

@@ -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