diff --git a/CMakeLists.txt b/CMakeLists.txt index 6cb725dba..85cabdb60 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1124,12 +1124,19 @@ if(APPLE AND EXISTS "/usr/bin/otool") endif() endif() if(FreeBSD AND EXISTS "/usr/local/bin/objdump") - execute_process(COMMAND /bin/sh -c "/usr/local/bin/objdump -T /lib/libc.so.* | grep 'FBSD_[^ )]*' -o | sort -Vru | head -1" + execute_process(COMMAND /bin/sh -c "/usr/local/bin/objdump -T /lib/libc.so.* | grep 'FBSD_[0-9][0-9]*\\.[0-9][0-9]*' -o | sort -Vru | head -1" OUTPUT_VARIABLE OBJDUMP_T_RESULT) if("${OBJDUMP_T_RESULT}" MATCHES "FBSD_([0-9]+\\.[0-9]+)") target_compile_definitions(libfastfetch PUBLIC FF_FBSD_VERSION="${CMAKE_MATCH_1}") endif() endif() +if(DragonFly AND EXISTS "/usr/local/bin/objdump") + execute_process(COMMAND /bin/sh -c "/usr/local/bin/objdump -T /lib/libc.so.* | grep 'DF[0-9][0-9]*\\.[0-9][0-9]*' -o | sort -Vru | head -1" + OUTPUT_VARIABLE OBJDUMP_T_RESULT) + if("${OBJDUMP_T_RESULT}" MATCHES "DF([0-9]+\\.[0-9]+)") + target_compile_definitions(libfastfetch PUBLIC FF_DF_VERSION="${CMAKE_MATCH_1}") + endif() +endif() if(LINUX) target_compile_definitions(libfastfetch PUBLIC _GNU_SOURCE _XOPEN_SOURCE _ATFILE_SOURCE __STDC_WANT_LIB_EXT1__ _FILE_OFFSET_BITS=64 _TIME_BITS=64) # "$<$:_FORTIFY_SOURCE=3>" diff --git a/src/detection/libc/libc_bsd.c b/src/detection/libc/libc_bsd.c index 0b6ee4943..20bdbe108 100644 --- a/src/detection/libc/libc_bsd.c +++ b/src/detection/libc/libc_bsd.c @@ -2,11 +2,18 @@ const char* ffDetectLibc(FFLibcResult* result) { +#ifdef __DragonFly__ // We define `__FreeBSD__` on DragonFly BSD for simplification + result->name = "DF"; + #ifdef FF_DF_VERSION + result->version = FF_DF_VERSION; + #endif +#elif __FreeBSD__ result->name = "FBSD"; - -#ifdef FF_FBSD_VERSION + #ifdef FF_FBSD_VERSION result->version = FF_FBSD_VERSION; + #endif #else + result->name = "Unknown"; result->version = NULL; #endif return NULL; diff --git a/src/detection/version/version.c b/src/detection/version/version.c index 6e89c3b66..8b230eecb 100644 --- a/src/detection/version/version.c +++ b/src/detection/version/version.c @@ -26,6 +26,8 @@ #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(__FreeBSD__) #define FF_SYSNAME "FreeBSD" #elif defined(__APPLE__)