From: Viktor Szakats Date: Tue, 6 Jan 2026 22:50:48 +0000 (+0100) Subject: build: detect and include `inttypes.h` again X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4c9e4e99c107b8d0bda5b204c5b69a50425567b9;p=thirdparty%2Fcurl.git build: detect and include `inttypes.h` again For `PRI*` printf masks for fixed-size C99 types. Also: - add simple fallback for `PRIu32`, `PRIx32`, if `inttypes.h` is missing. Cherry-picked from #20200 Ref: #20207 Follow-up to 4701a6d2ae9f0b66a0feac4061868e944353449b #19695 Ref: 60359ad5049c42f333ac179a58cda87d6e4143a0 #12275 Closes #20208 --- diff --git a/.github/scripts/cmp-config.pl b/.github/scripts/cmp-config.pl index e831a97211..f12022dd5a 100755 --- a/.github/scripts/cmp-config.pl +++ b/.github/scripts/cmp-config.pl @@ -48,7 +48,6 @@ my %remove = ( '#define HAVE_GSSAPI_GSSAPI_GENERIC_H 1' => 1, '#define HAVE_GSSAPI_GSSAPI_H 1' => 1, '#define HAVE_GSSAPI_GSSAPI_KRB5_H 1' => 1, - '#define HAVE_INTTYPES_H 1' => 1, '#define HAVE_LDAP_H 1' => 1, '#define HAVE_LDAP_SSL 1' => 1, '#define HAVE_LIBBROTLIDEC 1' => 1, diff --git a/CMake/unix-cache.cmake b/CMake/unix-cache.cmake index f3db9f0e97..821349cda3 100644 --- a/CMake/unix-cache.cmake +++ b/CMake/unix-cache.cmake @@ -151,6 +151,7 @@ set(HAVE_IFADDRS_H 1) set(HAVE_IF_NAMETOINDEX 1) set(HAVE_INET_NTOP 1) set(HAVE_INET_PTON 1) +set(HAVE_INTTYPES_H 1) set(HAVE_IOCTLSOCKET 0) set(HAVE_IOCTLSOCKET_CAMEL 0) set(HAVE_IOCTLSOCKET_CAMEL_FIONBIO 0) diff --git a/CMake/win32-cache.cmake b/CMake/win32-cache.cmake index e704d2195b..27cb57057a 100644 --- a/CMake/win32-cache.cmake +++ b/CMake/win32-cache.cmake @@ -31,6 +31,7 @@ if(MINGW) set(HAVE_DIRENT_H 1) set(HAVE_FTRUNCATE 1) set(HAVE_GETTIMEOFDAY 1) + set(HAVE_INTTYPES_H 1) set(HAVE_LIBGEN_H 1) set(HAVE_OPENDIR 1) set(HAVE_SNPRINTF 1) @@ -55,8 +56,10 @@ else() set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size() set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size() if(MSVC_VERSION GREATER_EQUAL 1800) + set(HAVE_INTTYPES_H 1) set(HAVE_STDBOOL_H 1) else() + set(HAVE_INTTYPES_H 0) set(HAVE_STDBOOL_H 0) endif() set(HAVE_BOOL_T "${HAVE_STDBOOL_H}") diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e5383ac98..975f7670c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1461,6 +1461,7 @@ check_include_file_concat_curl("arpa/inet.h" HAVE_ARPA_INET_H) check_include_file("dirent.h" HAVE_DIRENT_H) check_include_file("fcntl.h" HAVE_FCNTL_H) check_include_file_concat_curl("ifaddrs.h" HAVE_IFADDRS_H) +check_include_file("inttypes.h" HAVE_INTTYPES_H) check_include_file("io.h" HAVE_IO_H) check_include_file_concat_curl("libgen.h" HAVE_LIBGEN_H) check_include_file("linux/tcp.h" HAVE_LINUX_TCP_H) diff --git a/lib/config-os400.h b/lib/config-os400.h index ec6c002efd..9307b44f51 100644 --- a/lib/config-os400.h +++ b/lib/config-os400.h @@ -96,6 +96,9 @@ /* Define if you have the `timeval' struct. */ #define HAVE_STRUCT_TIMEVAL +/* Define if you have the header file. */ +#define HAVE_INTTYPES_H + /* Define if you have the header file. */ #undef HAVE_IO_H diff --git a/lib/config-plan9.h b/lib/config-plan9.h index 5303ab3399..5bae684b1e 100644 --- a/lib/config-plan9.h +++ b/lib/config-plan9.h @@ -83,6 +83,7 @@ #define HAVE_GMTIME_R 1 #define HAVE_INET_NTOP 1 #define HAVE_INET_PTON 1 +#define HAVE_INTTYPES_H 1 #define HAVE_LIBGEN_H 1 #define HAVE_LIBZ 1 #define HAVE_LOCALE_H 1 diff --git a/lib/config-riscos.h b/lib/config-riscos.h index 3158c984ee..b58b16dc60 100644 --- a/lib/config-riscos.h +++ b/lib/config-riscos.h @@ -96,6 +96,9 @@ /* Define if you have the `timeval' struct. */ #define HAVE_STRUCT_TIMEVAL +/* Define if you have the header file. */ +#define HAVE_INTTYPES_H + /* Define if you have the header file. */ #undef HAVE_IO_H diff --git a/lib/config-win32.h b/lib/config-win32.h index 002782c6ea..6374bd0e98 100644 --- a/lib/config-win32.h +++ b/lib/config-win32.h @@ -82,6 +82,11 @@ /* Define if you have the header file. */ #define HAVE_FCNTL_H 1 +/* Define to 1 if you have the header file. */ +#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || defined(__MINGW32__) +#define HAVE_INTTYPES_H 1 +#endif + /* Define if you have the header file. */ #define HAVE_IO_H 1 diff --git a/lib/curl_config-cmake.h.in b/lib/curl_config-cmake.h.in index d8d9d7ecbe..bde26eb984 100644 --- a/lib/curl_config-cmake.h.in +++ b/lib/curl_config-cmake.h.in @@ -336,6 +336,9 @@ /* Define to 1 if symbol `sa_family_t' exists */ #cmakedefine HAVE_SA_FAMILY_T 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H 1 + /* Define to 1 if you have the ioctlsocket function. */ #cmakedefine HAVE_IOCTLSOCKET 1 diff --git a/lib/curl_setup.h b/lib/curl_setup.h index 05b4aff64e..6d2ef48373 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -464,6 +464,13 @@ #include +#ifdef HAVE_INTTYPES_H +#include +#else +#define PRIu32 "u" +#define PRIx32 "x" +#endif + #ifdef _WIN32 # ifdef HAVE_IO_H # include