From 1671ebd975c1f146b0dd9929fa4c2a3f8d39b305 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sun, 28 Jun 2026 12:19:11 +0200 Subject: [PATCH] build: drop superfluous `STDC_HEADERS` macro It is traditionally defined by autotools to detect the presence of set of standard C89 headers. autoconf 2.70 (2020-12-08) reduced the headers covered to `stdlib.h`, `string.h`. After 2.59d (2006-06-05) obsoleting it earlier. CMake replicated this detection, and curl included `curl/stdcheaders.h` if standard headers were missing. However, such condition could never happen because curl sources already assume all checked standard headers (`stdarg.h`, `stdlib.h`, `string.h`) and include them unconditionally. Since this is an unused feature detection and an impossible fallback path, drop them from CMake and curl's source. autotools continues to do the detection by default, but its result is unused after this patch. This leaves public `curl/stdcheaders.h` unused from within the codebase. Refs: https://github.com/autotools-mirror/autoconf/commit/f0c7c425539964047b0cb986d2ea5f5687a07069 https://github.com/autotools-mirror/autoconf/commit/86c213d0e355296f026a36e3203c0813041aae89 Follow-up to 65dae4ad80b02f25a25e17af62ea4f2940970330 #22191 Follow-up to 4c5307b45655ba75ab066564afdc0c111a8b9291 Ref: ae1912cb0d494b48d514d937826c9fe83ec96c4d Closes #22206 --- .github/scripts/cmp-config.pl | 1 + CMake/CurlTests.c | 10 ---------- CMake/unix-cache.cmake | 1 - CMake/win32-cache.cmake | 1 - CMakeLists.txt | 1 - lib/config-os400.h | 5 ----- lib/config-win32.h | 3 --- lib/curl_config-cmake.h.in | 3 --- lib/curl_setup.h | 4 ---- projects/vms/config_h.com | 10 ---------- 10 files changed, 1 insertion(+), 38 deletions(-) diff --git a/.github/scripts/cmp-config.pl b/.github/scripts/cmp-config.pl index b697ae1203..a0d33498a7 100755 --- a/.github/scripts/cmp-config.pl +++ b/.github/scripts/cmp-config.pl @@ -88,6 +88,7 @@ my %remove = ( '#define PACKAGE_TARNAME "curl"' => 1, '#define PACKAGE_URL ""' => 1, '#define PACKAGE_VERSION "-"' => 1, + '#define STDC_HEADERS 1' => 1, '#define VERSION "-"' => 1, '#define _FILE_OFFSET_BITS 64' => 1, ); diff --git a/CMake/CurlTests.c b/CMake/CurlTests.c index 95cd89bb63..c9d0b93d21 100644 --- a/CMake/CurlTests.c +++ b/CMake/CurlTests.c @@ -114,16 +114,6 @@ int main(void) } #endif -#ifdef STDC_HEADERS -#include -#include -#include -int main(void) -{ - return 0; -} -#endif - #ifdef HAVE_FILE_OFFSET_BITS #include /* Check that off_t can represent 2**63 - 1 correctly. diff --git a/CMake/unix-cache.cmake b/CMake/unix-cache.cmake index 97be36d5f3..287c3fdf9e 100644 --- a/CMake/unix-cache.cmake +++ b/CMake/unix-cache.cmake @@ -314,5 +314,4 @@ set(HAVE_UTIME 1) set(HAVE_UTIMES 1) set(HAVE_UTIME_H 1) set(HAVE_WRITABLE_ARGV 1) -set(STDC_HEADERS 1) set(USE_UNIX_SOCKETS 1) diff --git a/CMake/win32-cache.cmake b/CMake/win32-cache.cmake index c108087273..a684b459b0 100644 --- a/CMake/win32-cache.cmake +++ b/CMake/win32-cache.cmake @@ -161,7 +161,6 @@ set(HAVE_TERMIO_H 0) set(HAVE_TIME_T_UNSIGNED 0) set(HAVE_UTIME 1) set(HAVE_UTIMES 0) -set(STDC_HEADERS 1) # Types and sizes diff --git a/CMakeLists.txt b/CMakeLists.txt index 5929b741ce..5aa412fc98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1731,7 +1731,6 @@ foreach(_curl_test IN ITEMS HAVE_GETHOSTBYNAME_R_5 HAVE_GETHOSTBYNAME_R_6 HAVE_BOOL_T - STDC_HEADERS HAVE_ATOMIC ) curl_internal_test(${_curl_test}) diff --git a/lib/config-os400.h b/lib/config-os400.h index 76841af202..050fd9d7da 100644 --- a/lib/config-os400.h +++ b/lib/config-os400.h @@ -238,11 +238,6 @@ /* Size of time_t in number of bytes */ #define SIZEOF_TIME_T 4 -/* Define to 1 if all of the C89 standard headers exist (not only the ones - required in a freestanding environment). This macro is provided for - backward compatibility; new code need not use it. */ -#define STDC_HEADERS 1 - /* Define if you want to enable IPv6 support */ #define USE_IPV6 diff --git a/lib/config-win32.h b/lib/config-win32.h index fedfb8f30e..1f4f12f433 100644 --- a/lib/config-win32.h +++ b/lib/config-win32.h @@ -71,9 +71,6 @@ /* OTHER HEADER INFO */ /* ---------------------------------------------------------------- */ -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - /* Define to 1 if bool is an available type. */ #if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || defined(__MINGW32__) #define HAVE_BOOL_T 1 diff --git a/lib/curl_config-cmake.h.in b/lib/curl_config-cmake.h.in index 92280010c0..add3b26aad 100644 --- a/lib/curl_config-cmake.h.in +++ b/lib/curl_config-cmake.h.in @@ -634,9 +634,6 @@ ${SIZEOF_SIZE_T_CODE} /* The size of `time_t', as computed by sizeof. */ ${SIZEOF_TIME_T_CODE} -/* Define to 1 if you have the ANSI C header files. */ -#cmakedefine STDC_HEADERS 1 - /* Define if you have POSIX pthreads */ #cmakedefine HAVE_THREADS_POSIX 1 diff --git a/lib/curl_setup.h b/lib/curl_setup.h index a26bb23cb2..065fd04dde 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -490,10 +490,6 @@ # endif #endif -#ifndef STDC_HEADERS /* no standard C headers! */ -#include -#endif - #include #define HAVE_UINTPTR_T /* assume uintptr_t is provided by stdint.h */ diff --git a/projects/vms/config_h.com b/projects/vms/config_h.com index 0b23cc6633..2de76ad731 100644 --- a/projects/vms/config_h.com +++ b/projects/vms/config_h.com @@ -1648,16 +1648,6 @@ $ write tf "#endif" $ goto cfgh_in_loop1 $ endif $! -$! Process STDC_HEADERS (SAMBA!) -$!--------------------------- -$ if key2 .eqs. "STDC_HEADERS" -$ then -$ write tf "#ifndef STDC_HEADERS" -$ write tf "#define STDC_HEADERS 1" -$ write tf "#endif" -$ goto cfgh_in_loop1 -$ endif -$! $! Process PROTOTYPES directive $!------------------------------------- $ if key2 .eqs. "PROTOTYPES"