summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyo Nakamura <upa@haeena.net>2024-01-21 04:50:34 +0900
committerRyo Nakamura <upa@haeena.net>2024-01-21 04:50:34 +0900
commit7ab5cc3ce998351ae63fd5d48e64d5f3573b1488 (patch)
tree89eaa80fa5375edd073ffe8a4c6b211e6dd1c593
parent60977a8e7ab66fe6fd990c0ef780d651fee3172c (diff)
make it buildable at FreeBSD
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/fileops.c2
-rw-r--r--src/platform.c15
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 <sched.h>
#include <stdlib.h>
+#elif __FreeBSD__
+#include <stdlib.h>
+#include <unistd.h>
+#include <pthread_np.h>
#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)
{