summaryrefslogtreecommitdiffstats
path: root/src/detection/version
diff options
context:
space:
mode:
authorsumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
committersumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
commit76424950e373d3b04ac3dd13019151bfba3e8423 (patch)
tree4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/version
Add the files
Diffstat (limited to 'src/detection/version')
-rw-r--r--src/detection/version/version.c110
-rw-r--r--src/detection/version/version.h19
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;