build: enable thread-safe getaddrinfo() for OpenBSD, and other tidy-ups

Aka `HAVE_GETADDRINFO_THREADSAFE`.

- enable it for OpenBSD 5.4+ (2013-11-01).
  Also adjust cmake pre-fill.

- explicitly opt-in DragonFly BSD, for 2.2.0+ (2009-02-17).
  Assuming this commit implemented this feature:
  21fcee4d6e (diff-498ff649e8770eb9a94e99a399a4b473fcea41ef58b033a2a2dae3809e17bb04)
  Prior to this patch it was enabled in autotools by accident, because
  its host ID misses `bsd` so the global BSD disable was not applied.

- autotools: fix to enable for Darwin 9+ / macOS 10.5+ (2007-10-26).
  Prior to this patch it was Darwin 6 / macOS 10.2.
  Source: https://github.com/python/cpython/issues/70112
  Ref: https://en.wikipedia.org/wiki/MacOS_version_history
  10.5 was the first one UNIX '03 certified, which requires this
  feature. iOS and others were forked from this codebase, so they also
  have support.

- cmake: add version numbers as comments.
  Sadly the OS versions are not verified. This and the autotools logic
  could possibly be implemented in `curl-setup.h` more accurately, for
  all build systems, without duplicating logic.

Also:
- cmake: `BSD` variable requires CMake 3.25+, add fallback code where
  missing.
  Ref: https://cmake.org/cmake/help/v3.25/variable/BSD.html
- unix-cache.cmake: stop listing all BSDs for `HAVE_PIPE2`,
  and fix generic BSD filter for CMake <3.25.
- unix-cache.cmake: stop listing all BSDs, since it's prefilled anyway
  for those via `OtherTests.cmake`.

Ref: https://github.com/curl/curl/pull/22138#issuecomment-4773617195

Closes #22148
This commit is contained in:
Viktor Szakats 2026-06-22 22:41:07 +02:00
parent 62e095cee0
commit fbcce4da85
No known key found for this signature in database
4 changed files with 30 additions and 24 deletions

View file

@ -1330,7 +1330,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [
if test "$curl_cv_func_getaddrinfo" = "yes"; then
AC_MSG_CHECKING([if getaddrinfo is thread-safe])
if test "$curl_cv_apple" = "yes"; then
dnl Darwin 6.0 and macOS 10.2.X and newer
dnl Darwin 9+ and macOS 10.5+
tst_tsafe_getaddrinfo="yes"
fi
case $host_os in
@ -1342,10 +1342,18 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [
dnl AIX 5.2 and newer
tst_tsafe_getaddrinfo="yes"
;;
darwin[[12345]].*)
dnl Darwin 5.0 and macOS 10.1.X and older
darwin[[12345678]].*)
dnl Darwin <=8.0 and macOS <=10.4
tst_tsafe_getaddrinfo="no"
;;
dragonfly1.* | dragonfly2.[[01]])
dnl DragonFly BSD <=2.1.0
tst_tsafe_getaddrinfo="no"
;;
dragonfly*)
dnl DragonFly BSD 2.2.0+
tst_tsafe_getaddrinfo="yes"
;;
freebsd[[1234]].* | freebsd5.[[1234]]*)
dnl FreeBSD 5.4 and older
tst_tsafe_getaddrinfo="no"
@ -1374,6 +1382,14 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [
dnl NetBSD 4.X and newer
tst_tsafe_getaddrinfo="yes"
;;
openbsd[[1234]].* | openbsd5.[[0123]])
dnl OpenBSD <=5.3
tst_tsafe_getaddrinfo="no"
;;
openbsd*)
dnl OpenBSD 5.4+
tst_tsafe_getaddrinfo="yes"
;;
*bsd*)
dnl All other BSD's
tst_tsafe_getaddrinfo="no"