From c2edb6b932294773979b4f0a7a28c267402d1980 Mon Sep 17 00:00:00 2001 From: devuan Date: Sat, 26 Sep 2026 03:10:32 -0500 Subject: [PATCH 1/2] fix nob_nprocs build on FreeBSD/BSD under -std=c99 --- nob.h | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/nob.h b/nob.h index 2bdb16b..25ac2eb 100644 --- a/nob.h +++ b/nob.h @@ -167,10 +167,16 @@ # include # include #else +# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) +# ifndef __BSD_VISIBLE +# define __BSD_VISIBLE 1 +# endif +# endif # ifdef __APPLE__ # include # endif -# ifdef __FreeBSD__ +# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__) +# include # include # endif # include @@ -1293,7 +1299,31 @@ NOBDEF int nob_nprocs(void) GetSystemInfo(&siSysInfo); return siSysInfo.dwNumberOfProcessors; #else - return sysconf(_SC_NPROCESSORS_ONLN); +#ifdef _SC_NPROCESSORS_ONLN + { + long n = sysconf(_SC_NPROCESSORS_ONLN); + if (n > 0) return (int)n; + } +#endif +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__) + { +#if defined(CTL_HW) && defined(HW_NCPU) + int mib[2] = {CTL_HW, HW_NCPU}; + int ncpu = 0; + size_t len = sizeof(ncpu); + if (sysctl(mib, 2, &ncpu, &len, NULL, 0) == 0 && ncpu > 0) + return ncpu; +#endif + { + int ncpu = 0; + size_t len = sizeof(ncpu); + if (sysctlbyname("hw.ncpu", &ncpu, &len, NULL, 0) == 0 && + ncpu > 0) + return ncpu; + } + } +#endif + return 1; #endif } From 7ac192c75b2ae70a903887914604afc2d521f6a6 Mon Sep 17 00:00:00 2001 From: devuan Date: Sat, 26 Sep 2026 04:09:38 -0500 Subject: [PATCH 2/2] narrowed selection; working on OpenBSD now --- nob.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nob.h b/nob.h index 25ac2eb..50f379a 100644 --- a/nob.h +++ b/nob.h @@ -172,14 +172,14 @@ # define __BSD_VISIBLE 1 # endif # endif -# ifdef __APPLE__ -# include -# endif -# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__) +# include +# if defined(__FreeBSD__) # include # include # endif -# include +# ifdef __APPLE__ +# include +# endif # include # include # include @@ -1305,7 +1305,7 @@ NOBDEF int nob_nprocs(void) if (n > 0) return (int)n; } #endif -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__) +#if defined(__FreeBSD__) { #if defined(CTL_HW) && defined(HW_NCPU) int mib[2] = {CTL_HW, HW_NCPU};