[PATCH] Fixed compilation on NetBSD 10
Maxim Dounin
mdounin at mdounin.ru
Fri May 3 00:26:34 UTC 2024
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1714695523 -10800
# Fri May 03 03:18:43 2024 +0300
# Node ID ad458536f6e7f7fee8e0571c282db03894f500f1
# Parent 388a801e9bb9ab0a44713c510d1337a9432fe2b7
Fixed compilation on NetBSD 10.
NetBSD 10 changed struct kevent's udata type from "intptr_t" to "void *",
similarly to how it is defined on other systems. This breaks compilation,
since intptr_t is assumed on NetBSD.
Fix is to limit special intptr_t handling to NetBSD versions before 10.0.
To simplify testing, relevant definitions are moved from configure to code
(which seems to be the right thing anyway).
diff --git a/auto/unix b/auto/unix
--- a/auto/unix
+++ b/auto/unix
@@ -129,26 +129,6 @@ if test -z "$NGX_KQUEUE_CHECKED"; then
fi
-if [ "$NGX_SYSTEM" = "NetBSD" ]; then
-
- # NetBSD 2.0 incompatibly defines kevent.udata as "intptr_t"
-
- cat << END >> $NGX_AUTO_CONFIG_H
-
-#define NGX_KQUEUE_UDATA_T
-
-END
-
-else
- cat << END >> $NGX_AUTO_CONFIG_H
-
-#define NGX_KQUEUE_UDATA_T (void *)
-
-END
-
-fi
-
-
ngx_feature="crypt()"
ngx_feature_name=
ngx_feature_run=no
diff --git a/src/os/unix/ngx_darwin_config.h b/src/os/unix/ngx_darwin_config.h
--- a/src/os/unix/ngx_darwin_config.h
+++ b/src/os/unix/ngx_darwin_config.h
@@ -74,6 +74,7 @@
#if (NGX_HAVE_KQUEUE)
#include <sys/event.h>
+#define NGX_KQUEUE_UDATA_T (void *)
#endif
diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -85,6 +85,7 @@
#if (NGX_HAVE_KQUEUE)
#include <sys/event.h>
+#define NGX_KQUEUE_UDATA_T (void *)
#endif
diff --git a/src/os/unix/ngx_posix_config.h b/src/os/unix/ngx_posix_config.h
--- a/src/os/unix/ngx_posix_config.h
+++ b/src/os/unix/ngx_posix_config.h
@@ -124,7 +124,17 @@
#if (NGX_HAVE_KQUEUE)
+
#include <sys/event.h>
+
+/* NetBSD before 10.0 incompatibly defines kevent.udata as "intptr_t" */
+
+#if (defined __NetBSD__ && __NetBSD_Version__ < 999001500)
+#define NGX_KQUEUE_UDATA_T
+#else
+#define NGX_KQUEUE_UDATA_T (void *)
+#endif
+
#endif
More information about the nginx-devel
mailing list