cmake: fix Linux pre-fills for non-glibc (when _CURL_PREFILL=ON)

- do not pre-fill `HAVE_LINUX_TCP_H` on Linux.
  `linux/tcp.h` is a Linux kernel userspace header. It's likely
  installed when using glibc and likely missing by default when using
  something else, e.g. MUSL (e.g. on Alpine).

  Therefore always detect it for Linux targets, and only pre-fill it for
  non-Linux ones.

- do not pre-fill `HAVE_GLIBC_STRERROR_R` on Linux.
  To fix it for non-glibc envs, e.g. MUSL (e.g. on Alpine).

Note, the pre-fill option is a disabled by default, internal option and
strongly not recommended outside of curl development.

Closes #19116
This commit is contained in:
Viktor Szakats 2025-10-18 13:08:53 +02:00
parent 8de898414c
commit f30f1307c1
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201

View file

@ -142,7 +142,7 @@ set(HAVE_GETRLIMIT 1)
set(HAVE_GETSOCKNAME 1)
set(HAVE_GETTIMEOFDAY 1)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(HAVE_GLIBC_STRERROR_R 1)
# Depends on C library.
else()
set(HAVE_GLIBC_STRERROR_R 0)
endif()
@ -164,7 +164,7 @@ else()
endif()
set(HAVE_LIBGEN_H 1)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(HAVE_LINUX_TCP_H 1)
# Requires Linux kernel userspace headers. Expected with glibc. May be missing by default with MUSL.
else()
set(HAVE_LINUX_TCP_H 0)
endif()