← Commit list

9e6f1c5efb

Viktor Szakats
Viktor Szakats
2025-11-21
SUCCESS Duration: 147s

Subject

build: add build-level `CURL_DISABLE_TYPECHECK` options

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

.github/workflows/codeql.yml+2 -4
@@ -108,8 +108,7 @@ jobs:
# MultiSSL
export PKG_CONFIG_PATH; PKG_CONFIG_PATH="$(brew --prefix c-ares)/lib/pkgconfig:$(brew --prefix mbedtls)/lib/pkgconfig:$(brew --prefix rustls-ffi)/lib/pkgconfig:$(brew --prefix gsasl)/lib/pkgconfig"
- cmake -B _bld1 -G Ninja -DENABLE_DEBUG=ON \
- -DCMAKE_C_FLAGS=-DCURL_DISABLE_TYPECHECK \
+ cmake -B _bld1 -G Ninja -DCURL_DISABLE_TYPECHECK=ON -DENABLE_DEBUG=ON \
-DCURL_USE_GNUTLS=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_RUSTLS=ON -DCURL_USE_WOLFSSL=ON \
-DUSE_LIBRTMP=ON -DCURL_USE_GSASL=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON -DUSE_ECH=ON -DENABLE_ARES=ON \
-DCURL_DISABLE_VERBOSE_STRINGS=ON
@@ -119,8 +118,7 @@ jobs:
# HTTP/3
export PKG_CONFIG_PATH; PKG_CONFIG_PATH="$(brew --prefix libnghttp3)/lib/pkgconfig:$(brew --prefix libngtcp2)/lib/pkgconfig:$(brew --prefix gsasl)/lib/pkgconfig"
- cmake -B _bld2 -G Ninja \
- -DCMAKE_C_FLAGS=-DCURL_DISABLE_TYPECHECK \
+ cmake -B _bld2 -G Ninja -DCURL_DISABLE_TYPECHECK=ON \
-DCURL_USE_OPENSSL=ON -DOPENSSL_ROOT_DIR="$(brew --prefix openssl)" -DUSE_NGTCP2=ON \
-DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON \
-DUSE_LIBRTMP=ON -DCURL_USE_GSASL=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON
CMakeLists.txt+3 -1
@@ -462,7 +462,7 @@ option(CURL_DISABLE_SMB "Disable SMB" OFF)
mark_as_advanced(CURL_DISABLE_SMB)
option(CURL_DISABLE_SMTP "Disable SMTP" OFF)
mark_as_advanced(CURL_DISABLE_SMTP)
-option(CURL_DISABLE_SOCKETPAIR "Disable use of socketpair for curl_multi_poll" OFF)
+option(CURL_DISABLE_SOCKETPAIR "Disable use of socketpair for curl_multi_poll()" OFF)
mark_as_advanced(CURL_DISABLE_SOCKETPAIR)
option(CURL_DISABLE_WEBSOCKETS "Disable WebSocket" OFF)
mark_as_advanced(CURL_DISABLE_WEBSOCKETS)
@@ -470,6 +470,8 @@ option(CURL_DISABLE_TELNET "Disable Telnet" OFF)
mark_as_advanced(CURL_DISABLE_TELNET)
option(CURL_DISABLE_TFTP "Disable TFTP" OFF)
mark_as_advanced(CURL_DISABLE_TFTP)
+option(CURL_DISABLE_TYPECHECK "Disable curl_easy_setopt()/curl_easy_getinfo() type checking" OFF)
+mark_as_advanced(CURL_DISABLE_TYPECHECK)
option(CURL_DISABLE_VERBOSE_STRINGS "Disable verbose strings" OFF)
mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
configure.ac+52 -30
@@ -140,36 +140,37 @@ AC_SUBST(VERSIONNUM)
dnl
dnl initialize all the info variables
- curl_ssl_msg="no (--with-{openssl,gnutls,mbedtls,wolfssl,schannel,amissl,rustls} )"
- curl_ssh_msg="no (--with-{libssh,libssh2})"
- curl_zlib_msg="no (--with-zlib)"
- curl_brotli_msg="no (--with-brotli)"
- curl_zstd_msg="no (--with-zstd)"
- curl_gss_msg="no (--with-gssapi)"
- curl_gsasl_msg="no (--with-gsasl)"
-curl_tls_srp_msg="no (--enable-tls-srp)"
- curl_res_msg="blocking (--enable-ares / --enable-threaded-resolver)"
- curl_ipv6_msg="no (--enable-ipv6)"
-curl_unix_sockets_msg="no (--enable-unix-sockets)"
- curl_idn_msg="no (--with-{libidn2,winidn})"
- curl_docs_msg="enabled (--disable-docs)"
- curl_manual_msg="no (--enable-manual)"
-curl_libcurl_msg="enabled (--disable-libcurl-option)"
-curl_verbose_msg="enabled (--disable-verbose)"
- curl_sspi_msg="no (--enable-sspi)"
- curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
- curl_ldaps_msg="no (--enable-ldaps)"
- curl_ipfs_msg="no (--enable-ipfs)"
- curl_rtsp_msg="no (--enable-rtsp)"
- curl_rtmp_msg="no (--with-librtmp)"
- curl_psl_msg="no (--with-libpsl)"
- curl_altsvc_msg="enabled (--disable-alt-svc)"
-curl_headers_msg="enabled (--disable-headers-api)"
- curl_hsts_msg="enabled (--disable-hsts)"
- ssl_backends=
- curl_h1_msg="enabled (internal)"
- curl_h2_msg="no (--with-nghttp2)"
- curl_h3_msg="no (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-openssl-quic)"
+ curl_ssl_msg="no (--with-{openssl,gnutls,mbedtls,wolfssl,schannel,amissl,rustls} )"
+ curl_ssh_msg="no (--with-{libssh,libssh2})"
+ curl_zlib_msg="no (--with-zlib)"
+ curl_brotli_msg="no (--with-brotli)"
+ curl_zstd_msg="no (--with-zstd)"
+ curl_gss_msg="no (--with-gssapi)"
+ curl_gsasl_msg="no (--with-gsasl)"
+ curl_tls_srp_msg="no (--enable-tls-srp)"
+ curl_res_msg="blocking (--enable-ares / --enable-threaded-resolver)"
+ curl_ipv6_msg="no (--enable-ipv6)"
+curl_unix_sockets_msg="no (--enable-unix-sockets)"
+ curl_idn_msg="no (--with-{libidn2,winidn})"
+ curl_docs_msg="enabled (--disable-docs)"
+ curl_manual_msg="no (--enable-manual)"
+ curl_libcurl_msg="enabled (--disable-libcurl-option)"
+ curl_typecheck_msg="enabled (--disable-typecheck)"
+ curl_verbose_msg="enabled (--disable-verbose)"
+ curl_sspi_msg="no (--enable-sspi)"
+ curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
+ curl_ldaps_msg="no (--enable-ldaps)"
+ curl_ipfs_msg="no (--enable-ipfs)"
+ curl_rtsp_msg="no (--enable-rtsp)"
+ curl_rtmp_msg="no (--with-librtmp)"
+ curl_psl_msg="no (--with-libpsl)"
+ curl_altsvc_msg="enabled (--disable-alt-svc)"
+ curl_headers_msg="enabled (--disable-headers-api)"
+ curl_hsts_msg="enabled (--disable-hsts)"
+ ssl_backends=
+ curl_h1_msg="enabled (internal)"
+ curl_h2_msg="no (--with-nghttp2)"
+ curl_h3_msg="no (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-openssl-quic)"
enable_altsvc="yes"
hsts="yes"
@@ -4345,6 +4346,26 @@ AC_CHECK_HEADER(dirent.h,
CURL_CONVERT_INCLUDE_TO_ISYSTEM
+dnl ************************************************************
+dnl disable curl_easy_setopt()/curl_easy_getinfo() type checking
+dnl
+AC_MSG_CHECKING([whether to enable curl_easy_setopt()/curl_easy_getinfo() type checking])
+AC_ARG_ENABLE(typecheck,
+AS_HELP_STRING([--enable-typecheck],[Enable type checking (default)])
+AS_HELP_STRING([--disable-typecheck],[Disable type checking]),
+[ case "$enableval" in
+ no)
+ AC_MSG_RESULT(no)
+ AC_DEFINE(CURL_DISABLE_TYPECHECK, 1, [to disable type checking])
+ curl_typecheck_msg="no"
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ ;;
+ esac ],
+ AC_MSG_RESULT(yes)
+)
+
dnl ************************************************************
dnl disable verbose text strings
dnl
@@ -5521,6 +5542,7 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
Build libcurl: Shared=${enable_shared}, Static=${enable_static}
Built-in manual: ${curl_manual_msg}
--libcurl option: ${curl_libcurl_msg}
+ Type checking: ${curl_typecheck_msg}
Verbose errors: ${curl_verbose_msg}
Code coverage: ${curl_coverage_msg}
SSPI: ${curl_sspi_msg}
docs/CURL-DISABLE.md+8 -2
@@ -68,8 +68,8 @@ Disable the FTP (and FTPS) protocol
## `CURL_DISABLE_GETOPTIONS`
-Disable the `curl_easy_options` API calls that lets users get information
-about existing options to `curl_easy_setopt`.
+Disable the `curl_easy_options()` API calls that lets users get information
+about existing options to `curl_easy_setopt()`.
## `CURL_DISABLE_GOPHER`
@@ -182,6 +182,12 @@ Disable the TELNET protocol
Disable the TFTP protocol
+## `CURL_DISABLE_TYPECHECK`
+
+Disable `curl_easy_setopt()`/`curl_easy_getinfo()` type checking.
+
+Useful to improve build performance for the `tests/libtest` test tool.
+
## `CURL_DISABLE_VERBOSE_STRINGS`
Disable verbose strings and error messages.
docs/INSTALL-CMAKE.md+2 -1
@@ -317,10 +317,11 @@ target_link_libraries(my_target PRIVATE CURL::libcurl)
- `CURL_DISABLE_SHUFFLE_DNS`: Disable shuffle DNS feature. Default: `OFF`
- `CURL_DISABLE_SMB`: Disable SMB. Default: `OFF`
- `CURL_DISABLE_SMTP`: Disable SMTP. Default: `OFF`
-- `CURL_DISABLE_SOCKETPAIR`: Disable use of socketpair for curl_multi_poll. Default: `OFF`
+- `CURL_DISABLE_SOCKETPAIR`: Disable use of socketpair for curl_multi_poll(). Default: `OFF`
- `CURL_DISABLE_SRP`: Disable TLS-SRP support. Default: `OFF`
- `CURL_DISABLE_TELNET`: Disable Telnet. Default: `OFF`
- `CURL_DISABLE_TFTP`: Disable TFTP. Default: `OFF`
+- `CURL_DISABLE_TYPECHECK`: Disable curl_easy_setopt()/curl_easy_getinfo() type checking. Default: `OFF`
- `CURL_DISABLE_VERBOSE_STRINGS`: Disable verbose strings. Default: `OFF`
- `CURL_DISABLE_WEBSOCKETS`: Disable WebSocket. Default: `OFF`
- `HTTP_ONLY`: Disable all protocols except HTTP (This overrides all `CURL_DISABLE_*` options). Default: `OFF`
include/curl/typecheck-gcc.h+2 -2
@@ -24,7 +24,7 @@
*
***************************************************************************/
-/* wraps curl_easy_setopt() with typechecking */
+/* wraps curl_easy_setopt() with type checking */
/* To add a new kind of warning, add an
* if(curlcheck_sometype_option(_curl_opt))
@@ -159,7 +159,7 @@
curl_easy_setopt(handle, option, value); \
})
-/* wraps curl_easy_getinfo() with typechecking */
+/* wraps curl_easy_getinfo() with type checking */
#define curl_easy_getinfo(handle, info, arg) \
__extension__({ \
if(__builtin_constant_p(info)) { \
lib/curl_config.h.cmake+4 -1
@@ -151,7 +151,7 @@
/* disabled WebSocket */
#cmakedefine CURL_DISABLE_WEBSOCKETS 1
-/* disables use of socketpair for curl_multi_poll */
+/* disables use of socketpair for curl_multi_poll() */
#cmakedefine CURL_DISABLE_SOCKETPAIR 1
/* disables TELNET */
@@ -160,6 +160,9 @@
/* disables TFTP */
#cmakedefine CURL_DISABLE_TFTP 1
+/* disables curl_easy_setopt()/curl_easy_getinfo() type checking */
+#cmakedefine CURL_DISABLE_TYPECHECK 1
+
/* disables verbose strings */
#cmakedefine CURL_DISABLE_VERBOSE_STRINGS 1
tests/libtest/lib1912.c+1 -2
@@ -31,7 +31,7 @@
static CURLcode test_lib1912(const char *URL)
{
-/* Only test if GCC typechecking is available */
+/* Only test if GCC/clang type checking is available */
int error = 0;
#ifdef CURLINC_TYPECHECK_GCC_H
const struct curl_easyoption *o;
@@ -73,7 +73,6 @@ static CURLcode test_lib1912(const char *URL)
print_err(o->name, "CURLOT_OBJECT");
error++;
}
- /* Todo: no gcc typecheck for CURLOPTTYPE_BLOB types? */
}
#endif
(void)URL;
tests/test1165.pl+2 -1
@@ -86,7 +86,7 @@ sub scan_cmake_config_h {
scanconf_cmake(\%disable_cmake_config_h, "$root/lib/curl_config.h.cmake");
}
-my %whitelisted = ("CURL_DISABLE_TYPECHECK" => 1);
+my %whitelisted = ('CURL_DISABLE_DEPRECATION' => 1);
sub scan_file {
my ($source)=@_;
@@ -114,6 +114,7 @@ sub scan_dir {
}
sub scan_sources {
+ scan_dir("$root/include/curl");
scan_dir("$root/src");
scan_dir("$root/lib");
scan_dir("$root/lib/vtls");