diff options
Diffstat (limited to 'src/detection/version')
| -rw-r--r-- | src/detection/version/version.c | 110 | ||||
| -rw-r--r-- | src/detection/version/version.h | 19 |
2 files changed, 129 insertions, 0 deletions
diff --git a/src/detection/version/version.c b/src/detection/version/version.c new file mode 100644 index 0000000..8bd066e --- /dev/null +++ b/src/detection/version/version.c @@ -0,0 +1,110 @@ +#include "version.h" + +#if defined(__x86_64__) + #define FF_ARCHITECTURE "x86_64" +#elif defined(__i386__) + #define FF_ARCHITECTURE "i386" +#elif defined(__ia64__) + #define FF_ARCHITECTURE "ia64" +#elif defined(__aarch64__) + #define FF_ARCHITECTURE "aarch64" +#elif defined(__arm__) + #define FF_ARCHITECTURE "arm" +#elif defined(__mips__) + #define FF_ARCHITECTURE "mips" +#elif defined(__powerpc__) || defined(__powerpc) + #define FF_ARCHITECTURE "powerpc" +#elif defined(__riscv__) || defined(__riscv) + #define FF_ARCHITECTURE "riscv" +#elif defined(__s390x__) + #define FF_ARCHITECTURE "s390x" +#elif defined(__loongarch__) + #define FF_ARCHITECTURE "loongarch" +#elif defined(__sparc__) + #define FF_ARCHITECTURE "sparc" +#elif defined(__alpha__) + #define FF_ARCHITECTURE "alpha" +#elif defined(__hppa__) + #define FF_ARCHITECTURE "hppa" +#elif defined(__sh__) + #define FF_ARCHITECTURE "sh" +#elif defined(__m68k__) + #define FF_ARCHITECTURE "m68k" +#else + #define FF_ARCHITECTURE "Unknown" +#endif + +#if defined(__ANDROID__) + #define FF_SYSNAME "Android" +#elif defined(__linux__) + #define FF_SYSNAME "Linux" +#elif defined(__DragonFly__) // We define `__FreeBSD__` on DragonFly BSD for simplification + #define FF_SYSNAME "DragonFly" +#elif defined(__MidnightBSD__) + #define FF_SYSNAME "MidnightBSD" +#elif defined(__FreeBSD__) + #define FF_SYSNAME "FreeBSD" +#elif defined(__APPLE__) + #define FF_SYSNAME "macOS" +#elif defined(_WIN32) + #define FF_SYSNAME "Windows" +#elif defined(__sun) + #define FF_SYSNAME "SunOS" +#elif defined(__OpenBSD__) + #define FF_SYSNAME "OpenBSD" +#elif defined(__NetBSD__) + #define FF_SYSNAME "NetBSD" +#elif defined(__HAIKU__) + #define FF_SYSNAME "Haiku" +#elif defined(__GNU__) + #define FF_SYSNAME "GNU" +#else + #define FF_SYSNAME "Unknown" +#endif + +#define FF_STR_INDIR(x) #x +#define FF_STR(x) FF_STR_INDIR(x) + +FFVersionResult ffVersionResult = { + .projectName = FASTFETCH_PROJECT_NAME, + .sysName = FF_SYSNAME, + .architecture = FF_ARCHITECTURE, + .version = FASTFETCH_PROJECT_VERSION, + .versionTweak = FASTFETCH_PROJECT_VERSION_TWEAK, + .versionGit = FASTFETCH_PROJECT_VERSION_GIT, + .cmakeBuiltType = FASTFETCH_PROJECT_CMAKE_BUILD_TYPE, + .compileTime = __DATE__ ", " __TIME__, + .compiler = + +#ifdef __clang__ + #ifdef _MSC_VER + "clang-cl "; + #elif defined(__APPLE__) && defined(__apple_build_version__) + "Apple clang " + #else + "clang " + #endif + +FF_STR(__clang_major__) +"." FF_STR(__clang_minor__) "." FF_STR(__clang_patchlevel__) + + #if defined(__APPLE__) && defined(__apple_build_version__) + " (" FF_STR(__apple_build_version__) ")" + #endif + , +#elif defined(__GNUC__) + "gcc " FF_STR(__GNUC__) "." FF_STR(__GNUC_MINOR__) "." FF_STR(__GNUC_PATCHLEVEL__), +#elif defined(_MSC_VER) + "msvc " FF_STR(_MSC_VER), +#else + "unknown", +#endif + + .debugMode = +#ifndef NDEBUG + true, +#else + false, +#endif +} +; diff --git a/src/detection/version/version.h b/src/detection/version/version.h new file mode 100644 index 0000000..1330535 --- /dev/null +++ b/src/detection/version/version.h @@ -0,0 +1,19 @@ +#pragma once + +#include "fastfetch.h" +#include "modules/version/option.h" + +typedef struct FFVersionResult { + const char* projectName; + const char* sysName; + const char* architecture; + const char* version; + const char* versionTweak; + const char* versionGit; + const char* cmakeBuiltType; + const char* compileTime; + const char* compiler; + bool debugMode; +} FFVersionResult; + +extern FFVersionResult ffVersionResult; |