feat: add platform detection
This commit is contained in:
54
include/misc/Platform.h
Normal file
54
include/misc/Platform.h
Normal 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
|
||||||
Reference in New Issue
Block a user