From 7ab5cc3ce998351ae63fd5d48e64d5f3573b1488 Mon Sep 17 00:00:00 2001 From: Ryo Nakamura Date: Sun, 21 Jan 2024 04:50:34 +0900 Subject: make it buildable at FreeBSD --- CMakeLists.txt | 2 +- src/fileops.c | 2 +- src/platform.c | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a967693..a2f9533 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -177,7 +177,7 @@ set(CPACK_PACKAGE_DESCRIPTION execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) -if(UNIX AND NOT APPLE) # on linux +if(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux) execute_process(COMMAND bash "-c" "cat /etc/os-release|grep '^ID='|cut -d '=' -f 2|tr -d '\"'" OUTPUT_VARIABLE DIST_NAME OUTPUT_STRIP_TRAILING_WHITESPACE) diff --git a/src/fileops.c b/src/fileops.c index 6f55ca9..ac85bf8 100644 --- a/src/fileops.c +++ b/src/fileops.c @@ -329,7 +329,7 @@ int mscp_glob(const char *pattern, int flags, glob_t *pglob, sftp_session sftp) #else flags |= GLOB_ALTDIRFUNC; set_tls_sftp_session(sftp); -#ifdef __APPLE__ +#if defined(__APPLE__) || defined(__FreeBSD__) pglob->gl_opendir = (void *(*)(const char *))mscp_opendir_wrapped; pglob->gl_readdir = (struct dirent *(*)(void *))mscp_readdir; pglob->gl_closedir = (void (*)(void *))mscp_closedir; diff --git a/src/platform.c b/src/platform.c index 6eac132..a2dfb86 100644 --- a/src/platform.c +++ b/src/platform.c @@ -7,6 +7,10 @@ #define _GNU_SOURCE #include #include +#elif __FreeBSD__ +#include +#include +#include #else #error unsupported platform #endif @@ -78,6 +82,17 @@ int nr_cpus() return CPU_COUNT(&cpu_set); return -1; } +#endif + +#ifdef __FreeBSD__ +int nr_cpus() +{ + long nr_cpus = sysconf(_SC_NPROCESSORS_ONLN); + return nr_cpus; +} +#endif + +#if defined(linux) || defined(__FreeBSD__) int set_thread_affinity(pthread_t tid, int core) { -- cgit v1.2.3