skeeto / w64devkit

Portable C and C++ Development Kit for x64 (and x86) Windows
The Unlicense
2.66k stars 185 forks source link

Autotools not detecting non-blocking I/O mechanisms required by cURL #146

Closed Semphriss closed 1 day ago

Semphriss commented 3 days ago

I'm trying to add cURL in the Dockerfile, but compiling results in the compilation complaining that it can't find any non-blocking method.

Using the same command on my host OS (Ubuntu 22.04), cURL compiles properly, which leads me to believe the issue is specific to w64devkit.

I'm not familiar with the fine details of what w64devkit supports or not, but does this ring any bell about a particular setting, issue or missing tool? I realize fixing the whole thing might be more complicated than what's generally acceptable in a GitHub issue, but I thought I'd ask in case it turns out to be something simple.

Edit: I've tested the same thing based on w64devkit 1.22.0 and it works, so it appears to be a regression.


My changes and the logs:

Addition to the Dockerfile

Right above "Packing up a release":

WORKDIR /curl-$CURL_VERSION
RUN ./configure \
        --host=$ARCH \
        --prefix=/deps \
        --with-schannel \
        --without-libpsl \
        CFLAGS="-Os" \
        LDFLAGS="-s" \
 && make -j$(nproc) \
 && make install \
 && cp /deps/bin/libcurl* $PREFIX/bin/

Uses version 8.7.1, downloaded from https://curl.se/download/curl-$CURL_VERSION.tar.bz2, sha256 05bbd2b698e9cfbab477c33aa5e99b4975501835a41b7ca6ca71de03d8849e76.

Result in Docker

The configure will run fine, but the make will error with:

nonblock.c: In function 'curlx_nonblock':
nonblock.c:82:4: error: #error "no non-blocking method was found/used/set"
   82 | #  error "no non-blocking method was found/used/set"
      |    ^~~~~
make[2]: *** [Makefile:2824: libcurl_la-nonblock.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/curl-8.7.1/lib'
make[1]: *** [Makefile:1536: all] Error 2
make[1]: Leaving directory '/curl-8.7.1/lib'
make: *** [Makefile:1267: all-recursive] Error 1

Output of configure:

checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports nested variables... yes
checking whether to enable debug build options... no
checking whether to enable compiler optimizer... (assumed) yes
checking whether to enable strict compiler warnings... no
checking whether to enable compiler warnings as errors... no
checking whether to enable curl debug memory tracking... no
checking whether to enable hiding of library internal symbols... yes
checking whether to enable c-ares for DNS lookups... no
checking whether to disable dependency on -lrt... (assumed no)
checking whether to enable ECH support... no
checking for path separator... :
checking for sed... /usr/bin/sed
checking for grep... /usr/bin/grep
checking that grep -E works... yes
checking for x86_64-w64-mingw32-ar... /bootstrap/bin/x86_64-w64-mingw32-ar
checking for a BSD-compatible install... /usr/bin/install -c
checking for x86_64-w64-mingw32-gcc... x86_64-w64-mingw32-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether x86_64-w64-mingw32-gcc accepts -g... yes
checking for x86_64-w64-mingw32-gcc option to enable C11 features... none needed
checking whether x86_64-w64-mingw32-gcc understands -c and -o together... yes
checking how to run the C preprocessor... x86_64-w64-mingw32-gcc -E
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for stdatomic.h... yes
checking if _Atomic is available... yes
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for code coverage support... no
checking whether build environment is sane... yes
checking for x86_64-w64-mingw32-strip... x86_64-w64-mingw32-strip
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of x86_64-w64-mingw32-gcc... gcc3
checking curl version... 8.7.1
checking for httpd... no
checking for apache2... no
checking for apachectl... no
checking for apxs... no
configure: httpd/apache2 not in PATH, http tests disabled
configure: apxs not in PATH, http tests disabled
checking for nghttpx... no
checking for caddy... no
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-w64-mingw32
checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking if OS is AIX (to define _ALL_SOURCE)... no
checking if _THREAD_SAFE is already defined... no
checking if _THREAD_SAFE is actually needed... no
checking if _THREAD_SAFE is onwards defined... no
checking if _REENTRANT is already defined... yes
checking if _REENTRANT is onwards defined... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for fgrep... /usr/bin/grep -F
checking for ld used by x86_64-w64-mingw32-gcc... /bootstrap/x86_64-w64-mingw32/bin/ld
checking if the linker (/bootstrap/x86_64-w64-mingw32/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /bootstrap/bin/x86_64-w64-mingw32-nm -B
checking the name lister (/bootstrap/bin/x86_64-w64-mingw32-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-w64-mingw32 format... func_convert_file_nix_to_w32
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /bootstrap/x86_64-w64-mingw32/bin/ld option to reload object files... -r
checking for x86_64-w64-mingw32-file... no
checking for file... no
checking for x86_64-w64-mingw32-objdump... x86_64-w64-mingw32-objdump
checking how to recognize dependent libraries... file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)
checking for x86_64-w64-mingw32-dlltool... x86_64-w64-mingw32-dlltool
checking how to associate runtime and link libraries... func_cygming_dll_for_implib
checking for x86_64-w64-mingw32-ar... /bootstrap/bin/x86_64-w64-mingw32-ar
checking for archiver @FILE support... @
checking for x86_64-w64-mingw32-strip... (cached) x86_64-w64-mingw32-strip
checking for x86_64-w64-mingw32-ranlib... x86_64-w64-mingw32-ranlib
checking command to parse /bootstrap/bin/x86_64-w64-mingw32-nm -B output from x86_64-w64-mingw32-gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for x86_64-w64-mingw32-mt... no
checking for mt... no
checking if : is a manifest tool... no
checking for dlfcn.h... no
checking for x86_64-w64-mingw32-as... x86_64-w64-mingw32-as
checking for x86_64-w64-mingw32-dlltool... (cached) x86_64-w64-mingw32-dlltool
checking for x86_64-w64-mingw32-objdump... (cached) x86_64-w64-mingw32-objdump
checking for objdir... .libs
checking if x86_64-w64-mingw32-gcc supports -fno-rtti -fno-exceptions... no
checking for x86_64-w64-mingw32-gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if x86_64-w64-mingw32-gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if x86_64-w64-mingw32-gcc static flag -static works... yes
checking if x86_64-w64-mingw32-gcc supports -c -o file.o... yes
checking if x86_64-w64-mingw32-gcc supports -c -o file.o... (cached) yes
checking whether the x86_64-w64-mingw32-gcc linker (/bootstrap/x86_64-w64-mingw32/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether to build shared libraries with -version-info... yes
checking whether to build shared libraries with -no-undefined... yes
checking whether to build shared libraries with -mimpure-text... no
checking whether to build shared libraries with PIC... yes
checking whether to build static libraries with PIC... no
checking whether to build shared libraries only... no
checking whether to build static libraries only... no
checking for x86_64-w64-mingw32-windres... x86_64-w64-mingw32-windres
checking for inline... inline
checking if cpp -P is needed... yes
checking if cpp -P works... yes
checking if compiler is DEC/Compaq/HP C... no
checking if compiler is HP-UX C... no
checking if compiler is IBM C... no
checking if compiler is Intel C... no
checking if compiler is clang... no
checking if compiler is GNU C... yes
checking compiler version... gcc '1401' (raw: '14.1.0')
checking if compiler is SGI MIPSpro C... no
checking if compiler is SGI MIPS C... no
checking if compiler is SunPro C... no
checking if compiler is Tiny C... no
checking whether build target is a native Windows one... yes
checking if compiler accepts some basic options... yes
configure: compiler options added: -Werror-implicit-function-declaration 
checking if compiler optimizer assumed setting might be used... no
checking if compiler accepts strict warning options... yes
configure: compiler options added: -Wno-system-headers 
checking if compiler halts on compilation errors... yes
checking if compiler halts on negative sized arrays... yes
checking if compiler halts on function prototype mismatch... yes
checking if compiler supports hiding library internal symbols... yes
checking whether build target supports WIN32 file API... yes (large file enabled)
checking whether build target supports WIN32 crypto API... yes
checking for good-to-use Darwin CFLAGS... no
checking whether to link macOS CoreFoundation, CoreServices, and SystemConfiguration frameworks... no
checking to see if the compiler supports __builtin_available()... no
checking whether to support http... yes
checking whether to support ftp... yes
checking whether to support file... yes
checking whether to support ldap... yes
checking whether to support ldaps... yes
checking whether to support rtsp... yes
checking whether to support proxies... yes
checking whether to support dict... yes
checking whether to support telnet... yes
checking whether to support tftp... yes
checking whether to support pop3... yes
checking whether to support imap... yes
checking whether to support smb... yes
checking whether to support smtp... yes
checking whether to support gopher... yes
checking whether to support mqtt... no
checking whether to build documentation... yes
checking whether to provide built-in manual... yes
checking whether to enable generation of C code... yes
checking whether to use libgcc... no
checking if X/Open network library is required... no
checking for gethostbyname... no
checking for gethostbyname in -lnsl... no
checking for gethostbyname in -lsocket... no
checking for gethostbyname in -lwatt... no
checking for gethostbyname with both nsl and socket libs... no
checking for gethostbyname in -lws2_32... yes
checking whether build target is a native Windows one... (cached) yes
checking for proto/bsdsocket.h... no
checking for connect in libraries... yes
checking for sys/types.h... (cached) yes
checking for sys/time.h... yes
checking for monotonic clock_gettime... yes
checking for clock_gettime in libraries... no additional lib required
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for raw monotonic clock_gettime... no
checking for x86_64-w64-mingw32-pkg-config... no
checking for pkg-config... no
checking for inflateEnd in -lz... no
checking for zlib.h... no
checking for BrotliDecoderDecompress in -lbrotlidec... no
checking for brotli/decode.h... no
checking for ZSTD_createDStream in -lzstd... no
checking for zstd.h... no
checking for lber.h... no
checking for ldap.h... no
checking for ldap_ssl.h... no
checking for ldap_init in -l"wldap32"... yes
checking for ldap_url_parse... no
checking for ldap_init_fd... no
checking whether to enable IPv6... yes
checking if struct sockaddr_in6 has sin6_scope_id member... yes
checking if argv can be written to... no
configure: WARNING: the previous check could not be made default was used
checking if GSS-API support is requested... no
checking whether to enable Windows native SSL/TLS... yes
checking whether to enable Secure Transport... no
checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... no
configure: built with one SSL backend
checking for library containing gsasl_init... no
configure: WARNING: libgsasl was not found
checking for RTMP_Init in -lrtmp... no
checking whether versioned symbols are wanted... no
checking whether to enable Windows native IDN (Windows native builds only)... no
checking whether to build with libidn2... (assumed) yes
checking for x86_64-w64-mingw32-pkg-config... no
checking for pkg-config... no
configure: IDN_LIBS: "-lidn2"
configure: IDN_LDFLAGS: ""
configure: IDN_CPPFLAGS: ""
configure: IDN_DIR: ""
checking if idn2_lookup_ul can be linked... no
checking for idn2.h... no
configure: WARNING: Cannot find libraries for IDN support: IDN disabled
checking for x86_64-w64-mingw32-pkg-config... no
checking for pkg-config... no
checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... no
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for sys/select.h... no
checking for sys/socket.h... no
checking for sys/ioctl.h... no
checking for unistd.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for arpa/inet.h... no
checking for net/if.h... no
checking for netinet/in.h... no
checking for netinet/in6.h... no
checking for sys/un.h... no
checking for linux/tcp.h... no
checking for netinet/tcp.h... no
checking for netinet/udp.h... no
checking for netdb.h... no
checking for sys/sockio.h... no
checking for sys/stat.h... (cached) yes
checking for sys/param.h... yes
checking for termios.h... no
checking for termio.h... no
checking for fcntl.h... yes
checking for io.h... yes
checking for pwd.h... no
checking for utime.h... yes
checking for sys/utime.h... yes
checking for sys/poll.h... no
checking for poll.h... no
checking for socket.h... no
checking for sys/resource.h... no
checking for libgen.h... yes
checking for locale.h... yes
checking for stdbool.h... yes
checking for sys/filio.h... no
checking for sys/wait.h... no
checking for setjmp.h... yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for struct timeval... yes
checking size of size_t... 8
checking size of long... 4
checking size of int... 4
checking size of time_t... 8
checking size of off_t... 8
checking size of curl_off_t... 8
checking size of curl_socket_t... 8
checking for long long... yes
checking for ssize_t... yes
checking for bool... yes
checking for sa_family_t... no
checking for ADDRESS_FAMILY... yes
checking for suseconds_t... no
checking if time_t is unsigned... no
checking for in_addr_t... no
checking for in_addr_t equivalent... unsigned long
checking for struct sockaddr_storage... yes
checking for sys/select.h... (cached) no
checking for sys/socket.h... (cached) no
checking for select... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for recv... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for send... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for MSG_NOSIGNAL... no
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking if alarm can be linked... yes
checking if alarm is prototyped... no
checking if alarm might be used... no
checking for sys/types.h... (cached) yes
checking for strings.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for libgen.h... (cached) yes
checking if basename can be linked... yes
checking if basename is prototyped... yes
checking if basename is compilable... yes
checking if basename usage allowed... yes
checking if basename might be used... yes
checking for sys/types.h... (cached) yes
checking for socket.h... (cached) no
checking if closesocket can be linked... yes
checking if closesocket is prototyped... yes
checking if closesocket is compilable... yes
checking if closesocket usage allowed... yes
checking if closesocket might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking if CloseSocket can be linked... no
checking if CloseSocket might be used... no
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for fcntl.h... (cached) yes
checking if fcntl can be linked... no
checking if fcntl might be used... no
checking whether build target is a native Windows one... (cached) yes
checking for sys/types.h... (cached) yes
checking for netdb.h... (cached) no
checking if freeaddrinfo can be linked... yes
checking if freeaddrinfo is prototyped... yes
checking if freeaddrinfo is compilable... yes
checking if freeaddrinfo usage allowed... yes
checking if freeaddrinfo might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/xattr.h... no
checking if fsetxattr can be linked... no
checking if fsetxattr might be used... no
checking if ftruncate can be linked... yes
checking if ftruncate is prototyped... yes
checking if ftruncate is compilable... yes
checking if ftruncate usage allowed... yes
checking if ftruncate might be used... yes
checking for sys/types.h... (cached) yes
checking if getaddrinfo can be linked... yes
checking if getaddrinfo is prototyped... yes
checking if getaddrinfo is compilable... yes
checking if getaddrinfo usage allowed... yes
checking if getaddrinfo might be used... yes
checking if getaddrinfo is threadsafe... yes
checking if gethostbyname can be linked... yes
checking if gethostbyname is prototyped... yes
checking if gethostbyname is compilable... yes
checking if gethostbyname usage allowed... yes
checking if gethostbyname might be used... yes
checking if gethostbyname_r can be linked... no
checking if gethostbyname_r might be used... no
checking if gethostname can be linked... yes
checking if gethostname is prototyped... yes
checking if gethostname is compilable... yes
checking for gethostname arg 2 data type... int
checking if gethostname usage allowed... yes
checking if gethostname might be used... yes
checking if getpeername can be linked... yes
checking if getpeername is prototyped... yes
checking if getpeername is compilable... yes
checking if getpeername usage allowed... yes
checking if getpeername might be used... yes
checking if getsockname can be linked... yes
checking if getsockname is prototyped... yes
checking if getsockname is compilable... yes
checking if getsockname usage allowed... yes
checking if getsockname might be used... yes
checking for net/if.h... (cached) no
checking if if_nametoindex can be linked... no
checking if if_nametoindex might be used... no
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for netinet/in.h... (cached) no
checking for ifaddrs.h... no
checking if getifaddrs can be linked... no
checking if getifaddrs might be used... no
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking if gmtime_r can be linked... no
checking if gmtime_r might be used... no
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for netinet/in.h... (cached) no
checking for arpa/inet.h... (cached) no
checking if inet_ntop can be linked... yes
checking if inet_ntop is prototyped... yes
checking if inet_ntop is compilable... yes
checking if inet_ntop usage allowed... yes
checking if inet_ntop might be used... yes
checking if inet_pton can be linked... yes
checking if inet_pton is prototyped... yes
checking if inet_pton is compilable... yes
checking if inet_pton usage allowed... yes
checking if inet_pton might be used... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for sys/ioctl.h... (cached) no
checking for stropts.h... no
checking if ioctl can be linked... no
checking if ioctl might be used... no
checking if ioctlsocket can be linked... yes
checking if ioctlsocket is prototyped... yes
checking if ioctlsocket is compilable... yes
checking if ioctlsocket usage allowed... yes
checking if ioctlsocket might be used... yes
checking if ioctlsocket FIONBIO is compilable... no
checking if ioctlsocket FIONBIO might be used... no
checking if IoctlSocket can be linked... no
checking if IoctlSocket might be used... no
checking if memrchr can be linked... no
checking if memrchr seems a macro... no
checking if memrchr might be used... no
checking for sys/types.h... (cached) yes
checking for poll.h... (cached) no
checking for sys/poll.h... (cached) no
checking if poll can be linked... no
checking if poll might be used... no
checking for sys/types.h... (cached) yes
checking if sigaction can be linked... no
checking if sigaction might be used... no
checking if siginterrupt can be linked... no
checking if siginterrupt might be used... no
checking if signal can be linked... yes
checking if signal is prototyped... yes
checking if signal is compilable... yes
checking if signal usage allowed... yes
checking if signal might be used... yes
checking for sys/types.h... (cached) yes
checking if sigsetjmp can be linked... no
checking if sigsetjmp seems a macro... no
checking if sigsetjmp might be used... no
checking if socket can be linked... yes
checking if socket is prototyped... yes
checking if socket is compilable... yes
checking if socket usage allowed... yes
checking if socket might be used... yes
checking if socketpair can be linked... no
checking if socketpair might be used... no
checking if strcasecmp can be linked... yes
checking if strcasecmp is prototyped... yes
checking if strcasecmp is compilable... yes
checking if strcasecmp usage allowed... yes
checking if strcasecmp might be used... yes
checking if strcmpi can be linked... yes
checking if strcmpi is prototyped... yes
checking if strcmpi is compilable... yes
checking if strcmpi usage allowed... yes
checking if strcmpi might be used... yes
checking if strdup can be linked... yes
checking if strdup is prototyped... yes
checking if strdup is compilable... yes
checking if strdup usage allowed... yes
checking if strdup might be used... yes
checking if strerror_r can be linked... no
checking if strerror_r might be used... no
checking if stricmp can be linked... yes
checking if stricmp is prototyped... yes
checking if stricmp is compilable... yes
checking if stricmp usage allowed... yes
checking if stricmp might be used... yes
checking if strtok_r can be linked... yes
checking if strtok_r is prototyped... yes
checking if strtok_r is compilable... yes
checking if strtok_r usage allowed... yes
checking if strtok_r might be used... yes
checking if strtoll can be linked... yes
checking if strtoll is prototyped... yes
checking if strtoll is compilable... yes
checking if strtoll usage allowed... yes
checking if strtoll might be used... yes
checking for x86_64-w64-mingw32-gcc options needed to detect all undeclared functions... none needed
checking whether getpwuid_r is declared... no
checking for _fseeki64... yes
checking for arc4random... no
checking deeper for arc4random... but still no
checking for fnmatch... no
checking deeper for fnmatch... but still no
checking for fseeko... yes
checking for geteuid... no
checking deeper for geteuid... but still no
checking for getpass_r... no
checking deeper for getpass_r... but still no
checking for getppid... no
checking deeper for getppid... but still no
checking for getpwuid... no
checking deeper for getpwuid... but still no
checking for getpwuid_r... no
checking deeper for getpwuid_r... but still no
checking for getrlimit... no
checking deeper for getrlimit... but still no
checking for gettimeofday... yes
checking for if_nametoindex... no
checking deeper for if_nametoindex... but still no
checking for mach_absolute_time... no
checking deeper for mach_absolute_time... but still no
checking for pipe... no
checking deeper for pipe... but still no
checking for sched_yield... yes
checking for sendmsg... no
checking deeper for sendmsg... but still no
checking for setlocale... yes
checking for setmode... yes
checking for setrlimit... no
checking deeper for setrlimit... but still no
checking for snprintf... yes
checking for utime... yes
checking for utimes... no
checking deeper for utimes... but still no
checking whether fseeko is declared... yes
checking how to set a socket into non-blocking mode... unknown
configure: WARNING: cannot determine non-blocking socket method.
checking for perl... /usr/bin/perl
checking whether to enable the threaded resolver... yes
checking whether to use POSIX threads for threaded resolver... auto
checking for pthread.h... yes
checking for pthread_create... yes
checking convert -I options to -isystem... yes
checking whether to enable verbose strings... yes
checking whether to enable SSPI support (Windows native builds only)... yes
checking whether to enable basic authentication method... yes
checking whether to enable bearer authentication method... yes
checking whether to enable digest authentication method... yes
checking whether to enable kerberos authentication method... yes
checking whether to enable negotiate authentication method... yes
checking whether to enable aws sig methods... yes
checking whether to support NTLM... yes
checking whether to enable NTLM delegation to winbind's helper... no
checking whether to enable TLS-SRP authentication... yes
checking whether to enable Unix domain sockets... auto
checking whether to support cookies... yes
checking whether to support socketpair... yes
checking whether to support HTTP authentication... yes
checking whether to support DoH... yes
checking whether to support the MIME API... yes
checking whether to support binding connections locally... yes
checking whether to support the form API... yes
checking whether to support date parsing... yes
checking whether to support netrc parsing... yes
checking whether to support progress-meter... yes
checking whether to support DNS shuffling... yes
checking whether to support curl_easy_option*... yes
checking whether to support alt-svc... yes
checking whether to support headers-api... yes
checking whether to support HSTS... yes
checking whether to support WebSockets... no
checking whether hiding of library internal symbols will actually happen... yes
checking if this build supports HTTPS-proxy... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating docs/Makefile
config.status: creating docs/examples/Makefile
config.status: creating docs/libcurl/Makefile
config.status: creating docs/libcurl/opts/Makefile
config.status: creating docs/cmdline-opts/Makefile
config.status: creating include/Makefile
config.status: creating include/curl/Makefile
config.status: creating src/Makefile
config.status: creating lib/Makefile
config.status: creating scripts/Makefile
config.status: creating lib/libcurl.vers
config.status: creating lib/libcurl.plist
config.status: creating tests/Makefile
config.status: creating tests/config
config.status: creating tests/certs/Makefile
config.status: creating tests/certs/scripts/Makefile
config.status: creating tests/data/Makefile
config.status: creating tests/server/Makefile
config.status: creating tests/libtest/Makefile
config.status: creating tests/unit/Makefile
config.status: creating tests/http/config.ini
config.status: creating tests/http/Makefile
config.status: creating tests/http/clients/Makefile
config.status: creating packages/Makefile
config.status: creating packages/vms/Makefile
config.status: creating curl-config
config.status: creating libcurl.pc
config.status: creating lib/curl_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure: Configured to build curl/libcurl:

  Host setup:       x86_64-w64-mingw32
  Install prefix:   /deps
  Compiler:         x86_64-w64-mingw32-gcc
   CFLAGS:          -Os -Werror-implicit-function-declaration -Wno-system-headers
   CPPFLAGS:        
   LDFLAGS:         -s
   LIBS:            -lbcrypt -ladvapi32 -lcrypt32 -lwldap32 -lws2_32

  curl version:     8.7.1
  SSL:              enabled (Schannel)
  SSH:              no      (--with-{libssh,libssh2})
  zlib:             no      (--with-zlib)
  brotli:           no      (--with-brotli)
  zstd:             no      (--with-zstd)
  GSS-API:          no      (--with-gssapi)
  GSASL:            no      (libgsasl not found)
  TLS-SRP:          no      (--enable-tls-srp)
  resolver:         POSIX threaded
  IPv6:             enabled
  Unix sockets:     enabled
  IDN:              no      (--with-{libidn2,winidn})
  Build docs:       enabled (--disable-docs)
  Build libcurl:    Shared=yes, Static=yes
  Built-in manual:  enabled
  --libcurl option: enabled (--disable-libcurl-option)
  Verbose errors:   enabled (--disable-verbose)
  Code coverage:    disabled
  SSPI:             enabled
  ca cert bundle:   no
  ca cert path:     
  ca fallback:      
  LDAP:             enabled (winldap)
  LDAPS:            enabled
  RTSP:             enabled
  RTMP:             no      (--with-librtmp)
  PSL:              no      (--with-libpsl)
  Alt-svc:          enabled (--disable-alt-svc)
  Headers API:      enabled (--disable-headers-api)
  HSTS:             enabled (--disable-hsts)
  HTTP1:            enabled (internal)
  HTTP2:            no      (--with-nghttp2)
  HTTP3:            no      (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-openssl-quic, --with-msh3)
  ECH:              no      (--enable-ech)
  WebSockets:       no      (--enable-websockets)
  Protocols:        DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS IPFS IPNS LDAP LDAPS MQTT POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP
  Features:         AsynchDNS HSTS HTTPS-proxy IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI UnixSockets alt-svc threadsafe

Result on host

Output of configure:

checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports nested variables... yes
checking whether to enable debug build options... no
checking whether to enable compiler optimizer... (assumed) yes
checking whether to enable strict compiler warnings... no
checking whether to enable compiler warnings as errors... no
checking whether to enable curl debug memory tracking... no
checking whether to enable hiding of library internal symbols... yes
checking whether to enable c-ares for DNS lookups... no
checking whether to disable dependency on -lrt... (assumed no)
checking whether to enable ECH support... no
checking for path separator... :
checking for sed... /usr/bin/sed
checking for grep... /usr/bin/grep
checking that grep -E works... yes
checking for x86_64-w64-mingw32-ar... /usr/bin/x86_64-w64-mingw32-ar
checking for a BSD-compatible install... /usr/bin/install -c
checking for x86_64-w64-mingw32-gcc... x86_64-w64-mingw32-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether x86_64-w64-mingw32-gcc accepts -g... yes
checking for x86_64-w64-mingw32-gcc option to enable C11 features... none needed
checking whether x86_64-w64-mingw32-gcc understands -c and -o together... yes
checking how to run the C preprocessor... x86_64-w64-mingw32-gcc -E
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for stdatomic.h... yes
checking if _Atomic is available... yes
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for code coverage support... no
checking whether build environment is sane... yes
checking for x86_64-w64-mingw32-strip... x86_64-w64-mingw32-strip
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of x86_64-w64-mingw32-gcc... gcc3
checking curl version... 8.7.1
checking for httpd... no
checking for apache2... no
checking for apachectl... no
checking for apxs... no
configure: httpd/apache2 not in PATH, http tests disabled
configure: apxs not in PATH, http tests disabled
checking for nghttpx... no
checking for caddy... no
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-w64-mingw32
checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking if OS is AIX (to define _ALL_SOURCE)... no
checking if _THREAD_SAFE is already defined... no
checking if _THREAD_SAFE is actually needed... no
checking if _THREAD_SAFE is onwards defined... no
checking if _REENTRANT is already defined... yes
checking if _REENTRANT is onwards defined... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for fgrep... /usr/bin/grep -F
checking for ld used by x86_64-w64-mingw32-gcc... /usr/bin/x86_64-w64-mingw32-ld
checking if the linker (/usr/bin/x86_64-w64-mingw32-ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/x86_64-w64-mingw32-nm -B
checking the name lister (/usr/bin/x86_64-w64-mingw32-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-w64-mingw32 format... func_convert_file_nix_to_w32
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/x86_64-w64-mingw32-ld option to reload object files... -r
checking for x86_64-w64-mingw32-file... no
checking for file... file
configure: WARNING: using cross tools not prefixed with host triplet
checking for x86_64-w64-mingw32-objdump... x86_64-w64-mingw32-objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for x86_64-w64-mingw32-dlltool... x86_64-w64-mingw32-dlltool
checking how to associate runtime and link libraries... func_cygming_dll_for_implib
checking for x86_64-w64-mingw32-ar... /usr/bin/x86_64-w64-mingw32-ar
checking for archiver @FILE support... @
checking for x86_64-w64-mingw32-strip... (cached) x86_64-w64-mingw32-strip
checking for x86_64-w64-mingw32-ranlib... x86_64-w64-mingw32-ranlib
checking command to parse /usr/bin/x86_64-w64-mingw32-nm -B output from x86_64-w64-mingw32-gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for x86_64-w64-mingw32-mt... no
checking for mt... mt
checking if mt is a manifest tool... no
checking for dlfcn.h... no
checking for x86_64-w64-mingw32-as... x86_64-w64-mingw32-as
checking for x86_64-w64-mingw32-dlltool... (cached) x86_64-w64-mingw32-dlltool
checking for x86_64-w64-mingw32-objdump... (cached) x86_64-w64-mingw32-objdump
checking for objdir... .libs
checking if x86_64-w64-mingw32-gcc supports -fno-rtti -fno-exceptions... no
checking for x86_64-w64-mingw32-gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if x86_64-w64-mingw32-gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if x86_64-w64-mingw32-gcc static flag -static works... yes
checking if x86_64-w64-mingw32-gcc supports -c -o file.o... yes
checking if x86_64-w64-mingw32-gcc supports -c -o file.o... (cached) yes
checking whether the x86_64-w64-mingw32-gcc linker (/usr/bin/x86_64-w64-mingw32-ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether to build shared libraries with -version-info... yes
checking whether to build shared libraries with -no-undefined... yes
checking whether to build shared libraries with -mimpure-text... no
checking whether to build shared libraries with PIC... yes
checking whether to build static libraries with PIC... no
checking whether to build shared libraries only... no
checking whether to build static libraries only... no
checking for x86_64-w64-mingw32-windres... x86_64-w64-mingw32-windres
checking for inline... inline
checking if cpp -P is needed... yes
checking if cpp -P works... yes
checking if compiler is DEC/Compaq/HP C... no
checking if compiler is HP-UX C... no
checking if compiler is IBM C... no
checking if compiler is Intel C... no
checking if compiler is clang... no
checking if compiler is GNU C... yes
checking compiler version... gcc '1000' (raw: '10')
checking if compiler is SGI MIPSpro C... no
checking if compiler is SGI MIPS C... no
checking if compiler is SunPro C... no
checking if compiler is Tiny C... no
checking whether build target is a native Windows one... yes
checking if compiler accepts some basic options... yes
configure: compiler options added: -Werror-implicit-function-declaration 
checking if compiler optimizer assumed setting might be used... no
checking if compiler accepts strict warning options... yes
configure: compiler options added: -Wno-system-headers 
checking if compiler halts on compilation errors... yes
checking if compiler halts on negative sized arrays... yes
checking if compiler halts on function prototype mismatch... yes
checking if compiler supports hiding library internal symbols... yes
checking whether build target supports WIN32 file API... yes (large file enabled)
checking whether build target supports WIN32 crypto API... yes
checking for good-to-use Darwin CFLAGS... no
checking whether to link macOS CoreFoundation, CoreServices, and SystemConfiguration frameworks... no
checking to see if the compiler supports __builtin_available()... no
checking whether to support http... yes
checking whether to support ftp... yes
checking whether to support file... yes
checking whether to support ldap... yes
checking whether to support ldaps... yes
checking whether to support rtsp... yes
checking whether to support proxies... yes
checking whether to support dict... yes
checking whether to support telnet... yes
checking whether to support tftp... yes
checking whether to support pop3... yes
checking whether to support imap... yes
checking whether to support smb... yes
checking whether to support smtp... yes
checking whether to support gopher... yes
checking whether to support mqtt... no
checking whether to build documentation... yes
checking whether to provide built-in manual... yes
checking whether to enable generation of C code... yes
checking whether to use libgcc... no
checking if X/Open network library is required... no
checking for gethostbyname... no
checking for gethostbyname in -lnsl... no
checking for gethostbyname in -lsocket... no
checking for gethostbyname in -lwatt... no
checking for gethostbyname with both nsl and socket libs... no
checking for gethostbyname in -lws2_32... yes
checking whether build target is a native Windows one... (cached) yes
checking for proto/bsdsocket.h... no
checking for connect in libraries... yes
checking for sys/types.h... (cached) yes
checking for sys/time.h... yes
checking for monotonic clock_gettime... yes
checking for clock_gettime in libraries... no additional lib required
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for raw monotonic clock_gettime... no
checking for x86_64-w64-mingw32-pkg-config... no
checking for pkg-config... /usr/bin/pkg-config
checking for zlib options with pkg-config... found
checking for zlib.h... no
configure: WARNING: configure found only the libz lib, not the header file!
checking for BrotliDecoderDecompress in -lbrotlidec... no
checking for brotli/decode.h... no
checking for ZSTD_createDStream in -lzstd... no
checking for zstd.h... no
checking for lber.h... no
checking for ldap.h... no
checking for ldap_ssl.h... no
checking for ldap_init in -l"wldap32"... yes
checking for ldap_url_parse... no
checking for ldap_init_fd... no
checking whether to enable IPv6... yes
checking if struct sockaddr_in6 has sin6_scope_id member... yes
checking if argv can be written to... no
configure: WARNING: the previous check could not be made default was used
checking if GSS-API support is requested... no
checking whether to enable Windows native SSL/TLS... yes
checking whether to enable Secure Transport... no
checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... no
configure: built with one SSL backend
checking for library containing gsasl_init... no
configure: WARNING: libgsasl was not found
checking for RTMP_Init in -lrtmp... no
checking whether versioned symbols are wanted... no
checking whether to enable Windows native IDN (Windows native builds only)... no
checking whether to build with libidn2... (assumed) yes
checking for x86_64-w64-mingw32-pkg-config... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libidn2 options with pkg-config... no
configure: IDN_LIBS: "-lidn2"
configure: IDN_LDFLAGS: ""
configure: IDN_CPPFLAGS: ""
configure: IDN_DIR: ""
checking if idn2_lookup_ul can be linked... no
checking for idn2.h... no
configure: WARNING: Cannot find libraries for IDN support: IDN disabled
checking for x86_64-w64-mingw32-pkg-config... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libnghttp2 options with pkg-config... no
checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... no
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for sys/select.h... no
checking for sys/socket.h... no
checking for sys/ioctl.h... no
checking for unistd.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for arpa/inet.h... no
checking for net/if.h... no
checking for netinet/in.h... no
checking for netinet/in6.h... no
checking for sys/un.h... no
checking for linux/tcp.h... no
checking for netinet/tcp.h... no
checking for netinet/udp.h... no
checking for netdb.h... no
checking for sys/sockio.h... no
checking for sys/stat.h... (cached) yes
checking for sys/param.h... yes
checking for termios.h... no
checking for termio.h... no
checking for fcntl.h... yes
checking for io.h... yes
checking for pwd.h... no
checking for utime.h... yes
checking for sys/utime.h... yes
checking for sys/poll.h... no
checking for poll.h... no
checking for socket.h... no
checking for sys/resource.h... no
checking for libgen.h... yes
checking for locale.h... yes
checking for stdbool.h... yes
checking for sys/filio.h... no
checking for sys/wait.h... no
checking for setjmp.h... yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for struct timeval... yes
checking size of size_t... 8
checking size of long... 4
checking size of int... 4
checking size of time_t... 8
checking size of off_t... 8
checking size of curl_off_t... 8
checking size of curl_socket_t... 8
checking for long long... yes
checking for ssize_t... yes
checking for bool... yes
checking for sa_family_t... no
checking for ADDRESS_FAMILY... yes
checking for suseconds_t... no
checking if time_t is unsigned... no
checking for in_addr_t... no
checking for in_addr_t equivalent... unsigned long
checking for struct sockaddr_storage... yes
checking for sys/select.h... (cached) no
checking for sys/socket.h... (cached) no
checking for select... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for recv... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for send... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for MSG_NOSIGNAL... no
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking if alarm can be linked... yes
checking if alarm is prototyped... no
checking if alarm might be used... no
checking for sys/types.h... (cached) yes
checking for strings.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for libgen.h... (cached) yes
checking if basename can be linked... yes
checking if basename is prototyped... yes
checking if basename is compilable... yes
checking if basename usage allowed... yes
checking if basename might be used... yes
checking for sys/types.h... (cached) yes
checking for socket.h... (cached) no
checking if closesocket can be linked... yes
checking if closesocket is prototyped... yes
checking if closesocket is compilable... yes
checking if closesocket usage allowed... yes
checking if closesocket might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking if CloseSocket can be linked... no
checking if CloseSocket might be used... no
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for fcntl.h... (cached) yes
checking if fcntl can be linked... no
checking if fcntl might be used... no
checking whether build target is a native Windows one... (cached) yes
checking for sys/types.h... (cached) yes
checking for netdb.h... (cached) no
checking if freeaddrinfo can be linked... yes
checking if freeaddrinfo is prototyped... yes
checking if freeaddrinfo is compilable... yes
checking if freeaddrinfo usage allowed... yes
checking if freeaddrinfo might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/xattr.h... no
checking if fsetxattr can be linked... no
checking if fsetxattr might be used... no
checking if ftruncate can be linked... yes
checking if ftruncate is prototyped... yes
checking if ftruncate is compilable... yes
checking if ftruncate usage allowed... yes
checking if ftruncate might be used... yes
checking for sys/types.h... (cached) yes
checking if getaddrinfo can be linked... yes
checking if getaddrinfo is prototyped... yes
checking if getaddrinfo is compilable... yes
checking if getaddrinfo usage allowed... yes
checking if getaddrinfo might be used... yes
checking if getaddrinfo is threadsafe... yes
checking if gethostbyname can be linked... yes
checking if gethostbyname is prototyped... yes
checking if gethostbyname is compilable... yes
checking if gethostbyname usage allowed... yes
checking if gethostbyname might be used... yes
checking if gethostbyname_r can be linked... no
checking if gethostbyname_r might be used... no
checking if gethostname can be linked... yes
checking if gethostname is prototyped... yes
checking if gethostname is compilable... yes
checking for gethostname arg 2 data type... int
checking if gethostname usage allowed... yes
checking if gethostname might be used... yes
checking if getpeername can be linked... yes
checking if getpeername is prototyped... yes
checking if getpeername is compilable... yes
checking if getpeername usage allowed... yes
checking if getpeername might be used... yes
checking if getsockname can be linked... yes
checking if getsockname is prototyped... yes
checking if getsockname is compilable... yes
checking if getsockname usage allowed... yes
checking if getsockname might be used... yes
checking for net/if.h... (cached) no
checking if if_nametoindex can be linked... no
checking if if_nametoindex might be used... no
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for netinet/in.h... (cached) no
checking for ifaddrs.h... no
checking if getifaddrs can be linked... no
checking if getifaddrs might be used... no
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking if gmtime_r can be linked... no
checking if gmtime_r might be used... no
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for netinet/in.h... (cached) no
checking for arpa/inet.h... (cached) no
checking if inet_ntop can be linked... yes
checking if inet_ntop is prototyped... no
checking if inet_ntop might be used... no
checking if inet_pton can be linked... yes
checking if inet_pton is prototyped... no
checking if inet_pton might be used... no
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/socket.h... (cached) no
checking for sys/ioctl.h... (cached) no
checking for stropts.h... no
checking if ioctl can be linked... no
checking if ioctl might be used... no
checking if ioctlsocket can be linked... yes
checking if ioctlsocket is prototyped... yes
checking if ioctlsocket is compilable... yes
checking if ioctlsocket usage allowed... yes
checking if ioctlsocket might be used... yes
checking if ioctlsocket FIONBIO is compilable... yes
checking if ioctlsocket FIONBIO usage allowed... yes
checking if ioctlsocket FIONBIO might be used... yes
checking if IoctlSocket can be linked... no
checking if IoctlSocket might be used... no
checking if memrchr can be linked... no
checking if memrchr seems a macro... no
checking if memrchr might be used... no
checking for sys/types.h... (cached) yes
checking for poll.h... (cached) no
checking for sys/poll.h... (cached) no
checking if poll can be linked... no
checking if poll might be used... no
checking for sys/types.h... (cached) yes
checking if sigaction can be linked... no
checking if sigaction might be used... no
checking if siginterrupt can be linked... no
checking if siginterrupt might be used... no
checking if signal can be linked... yes
checking if signal is prototyped... yes
checking if signal is compilable... yes
checking if signal usage allowed... yes
checking if signal might be used... yes
checking for sys/types.h... (cached) yes
checking if sigsetjmp can be linked... no
checking if sigsetjmp seems a macro... no
checking if sigsetjmp might be used... no
checking if socket can be linked... yes
checking if socket is prototyped... yes
checking if socket is compilable... yes
checking if socket usage allowed... yes
checking if socket might be used... yes
checking if socketpair can be linked... no
checking if socketpair might be used... no
checking if strcasecmp can be linked... yes
checking if strcasecmp is prototyped... yes
checking if strcasecmp is compilable... yes
checking if strcasecmp usage allowed... yes
checking if strcasecmp might be used... yes
checking if strcmpi can be linked... yes
checking if strcmpi is prototyped... yes
checking if strcmpi is compilable... yes
checking if strcmpi usage allowed... yes
checking if strcmpi might be used... yes
checking if strdup can be linked... yes
checking if strdup is prototyped... yes
checking if strdup is compilable... yes
checking if strdup usage allowed... yes
checking if strdup might be used... yes
checking if strerror_r can be linked... no
checking if strerror_r might be used... no
checking if stricmp can be linked... yes
checking if stricmp is prototyped... yes
checking if stricmp is compilable... yes
checking if stricmp usage allowed... yes
checking if stricmp might be used... yes
checking if strtok_r can be linked... yes
checking if strtok_r is prototyped... yes
checking if strtok_r is compilable... yes
checking if strtok_r usage allowed... yes
checking if strtok_r might be used... yes
checking if strtoll can be linked... yes
checking if strtoll is prototyped... yes
checking if strtoll is compilable... yes
checking if strtoll usage allowed... yes
checking if strtoll might be used... yes
checking for x86_64-w64-mingw32-gcc options needed to detect all undeclared functions... none needed
checking whether getpwuid_r is declared... no
checking for _fseeki64... yes
checking for arc4random... no
checking deeper for arc4random... but still no
checking for fnmatch... no
checking deeper for fnmatch... but still no
checking for fseeko... yes
checking for geteuid... no
checking deeper for geteuid... but still no
checking for getpass_r... no
checking deeper for getpass_r... but still no
checking for getppid... no
checking deeper for getppid... but still no
checking for getpwuid... no
checking deeper for getpwuid... but still no
checking for getpwuid_r... no
checking deeper for getpwuid_r... but still no
checking for getrlimit... no
checking deeper for getrlimit... but still no
checking for gettimeofday... yes
checking for if_nametoindex... no
checking deeper for if_nametoindex... but still no
checking for mach_absolute_time... no
checking deeper for mach_absolute_time... but still no
checking for pipe... no
checking deeper for pipe... but still no
checking for sched_yield... yes
checking for sendmsg... no
checking deeper for sendmsg... but still no
checking for setlocale... yes
checking for setmode... yes
checking for setrlimit... no
checking deeper for setrlimit... but still no
checking for snprintf... yes
checking for utime... yes
checking for utimes... no
checking deeper for utimes... but still no
checking whether fseeko is declared... yes
checking how to set a socket into non-blocking mode... ioctlsocket FIONBIO
checking for perl... /usr/bin/perl
checking whether to enable the threaded resolver... yes
checking whether to use POSIX threads for threaded resolver... auto
checking for pthread.h... yes
checking for pthread_create... yes
checking convert -I options to -isystem... yes
checking whether to enable verbose strings... yes
checking whether to enable SSPI support (Windows native builds only)... yes
checking whether to enable basic authentication method... yes
checking whether to enable bearer authentication method... yes
checking whether to enable digest authentication method... yes
checking whether to enable kerberos authentication method... yes
checking whether to enable negotiate authentication method... yes
checking whether to enable aws sig methods... yes
checking whether to support NTLM... yes
checking whether to enable NTLM delegation to winbind's helper... no
checking whether to enable TLS-SRP authentication... yes
checking whether to enable Unix domain sockets... auto
checking whether to support cookies... yes
checking whether to support socketpair... yes
checking whether to support HTTP authentication... yes
checking whether to support DoH... yes
checking whether to support the MIME API... yes
checking whether to support binding connections locally... yes
checking whether to support the form API... yes
checking whether to support date parsing... yes
checking whether to support netrc parsing... yes
checking whether to support progress-meter... yes
checking whether to support DNS shuffling... yes
checking whether to support curl_easy_option*... yes
checking whether to support alt-svc... yes
checking whether to support headers-api... yes
checking whether to support HSTS... yes
checking whether to support WebSockets... no
checking whether hiding of library internal symbols will actually happen... yes
checking if this build supports HTTPS-proxy... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating docs/Makefile
config.status: creating docs/examples/Makefile
config.status: creating docs/libcurl/Makefile
config.status: creating docs/libcurl/opts/Makefile
config.status: creating docs/cmdline-opts/Makefile
config.status: creating include/Makefile
config.status: creating include/curl/Makefile
config.status: creating src/Makefile
config.status: creating lib/Makefile
config.status: creating scripts/Makefile
config.status: creating lib/libcurl.vers
config.status: creating lib/libcurl.plist
config.status: creating tests/Makefile
config.status: creating tests/config
config.status: creating tests/certs/Makefile
config.status: creating tests/certs/scripts/Makefile
config.status: creating tests/data/Makefile
config.status: creating tests/server/Makefile
config.status: creating tests/libtest/Makefile
config.status: creating tests/unit/Makefile
config.status: creating tests/http/config.ini
config.status: creating tests/http/Makefile
config.status: creating tests/http/clients/Makefile
config.status: creating packages/Makefile
config.status: creating packages/vms/Makefile
config.status: creating curl-config
config.status: creating libcurl.pc
config.status: creating lib/curl_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure: Configured to build curl/libcurl:

  Host setup:       x86_64-w64-mingw32
  Install prefix:   /usr/local
  Compiler:         x86_64-w64-mingw32-gcc
   CFLAGS:          -Os -Werror-implicit-function-declaration -Wno-system-headers
   CPPFLAGS:        
   LDFLAGS:         -s
   LIBS:            -lbcrypt -ladvapi32 -lcrypt32 -lwldap32 -lws2_32

  curl version:     8.7.1
  SSL:              enabled (Schannel)
  SSH:              no      (--with-{libssh,libssh2})
  zlib:             no      (--with-zlib)
  brotli:           no      (--with-brotli)
  zstd:             no      (--with-zstd)
  GSS-API:          no      (--with-gssapi)
  GSASL:            no      (libgsasl not found)
  TLS-SRP:          no      (--enable-tls-srp)
  resolver:         POSIX threaded
  IPv6:             enabled
  Unix sockets:     enabled
  IDN:              no      (--with-{libidn2,winidn})
  Build docs:       enabled (--disable-docs)
  Build libcurl:    Shared=yes, Static=yes
  Built-in manual:  enabled
  --libcurl option: enabled (--disable-libcurl-option)
  Verbose errors:   enabled (--disable-verbose)
  Code coverage:    disabled
  SSPI:             enabled
  ca cert bundle:   no
  ca cert path:     
  ca fallback:      
  LDAP:             enabled (winldap)
  LDAPS:            enabled
  RTSP:             enabled
  RTMP:             no      (--with-librtmp)
  PSL:              no      (--with-libpsl)
  Alt-svc:          enabled (--disable-alt-svc)
  Headers API:      enabled (--disable-headers-api)
  HSTS:             enabled (--disable-hsts)
  HTTP1:            enabled (internal)
  HTTP2:            no      (--with-nghttp2)
  HTTP3:            no      (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-openssl-quic, --with-msh3)
  ECH:              no      (--enable-ech)
  WebSockets:       no      (--enable-websockets)
  Protocols:        DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS IPFS IPNS LDAP LDAPS MQTT POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP
  Features:         AsynchDNS HSTS HTTPS-proxy IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI UnixSockets alt-svc threadsafe

Difference between the outputs of configure

16c16
< checking for x86_64-w64-mingw32-ar... /bootstrap/bin/x86_64-w64-mingw32-ar
---
> checking for x86_64-w64-mingw32-ar... /usr/bin/x86_64-w64-mingw32-ar
45,46c45
< checking for gawk... no
< checking for mawk... mawk
---
> checking for gawk... gawk
74,77c73,76
< checking for ld used by x86_64-w64-mingw32-gcc... /bootstrap/x86_64-w64-mingw32/bin/ld
< checking if the linker (/bootstrap/x86_64-w64-mingw32/bin/ld) is GNU ld... yes
< checking for BSD- or MS-compatible name lister (nm)... /bootstrap/bin/x86_64-w64-mingw32-nm -B
< checking the name lister (/bootstrap/bin/x86_64-w64-mingw32-nm -B) interface... BSD nm
---
> checking for ld used by x86_64-w64-mingw32-gcc... /usr/bin/x86_64-w64-mingw32-ld
> checking if the linker (/usr/bin/x86_64-w64-mingw32-ld) is GNU ld... yes
> checking for BSD- or MS-compatible name lister (nm)... /usr/bin/x86_64-w64-mingw32-nm -B
> checking the name lister (/usr/bin/x86_64-w64-mingw32-nm -B) interface... BSD nm
82c81
< checking for /bootstrap/x86_64-w64-mingw32/bin/ld option to reload object files... -r
---
> checking for /usr/bin/x86_64-w64-mingw32-ld option to reload object files... -r
84c83,84
< checking for file... no
---
> checking for file... file
> configure: WARNING: using cross tools not prefixed with host triplet
86c86
< checking how to recognize dependent libraries... file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)
---
> checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
89c89
< checking for x86_64-w64-mingw32-ar... /bootstrap/bin/x86_64-w64-mingw32-ar
---
> checking for x86_64-w64-mingw32-ar... /usr/bin/x86_64-w64-mingw32-ar
93c93
< checking command to parse /bootstrap/bin/x86_64-w64-mingw32-nm -B output from x86_64-w64-mingw32-gcc object... ok
---
> checking command to parse /usr/bin/x86_64-w64-mingw32-nm -B output from x86_64-w64-mingw32-gcc object... ok
98,99c98,99
< checking for mt... no
< checking if : is a manifest tool... no
---
> checking for mt... mt
> checking if mt is a manifest tool... no
111c111
< checking whether the x86_64-w64-mingw32-gcc linker (/bootstrap/x86_64-w64-mingw32/bin/ld) supports shared libraries... yes
---
> checking whether the x86_64-w64-mingw32-gcc linker (/usr/bin/x86_64-w64-mingw32-ld) supports shared libraries... yes
136c136
< checking compiler version... gcc '1401' (raw: '14.1.0')
---
> checking compiler version... gcc '1000' (raw: '10')
194,195c194,195
< checking for pkg-config... no
< checking for inflateEnd in -lz... no
---
> checking for pkg-config... /usr/bin/pkg-config
> checking for zlib options with pkg-config... found
196a197
> configure: WARNING: configure found only the libz lib, not the header file!
223c224,225
< checking for pkg-config... no
---
> checking for pkg-config... (cached) /usr/bin/pkg-config
> checking for libidn2 options with pkg-config... no
232c234,235
< checking for pkg-config... no
---
> checking for pkg-config... (cached) /usr/bin/pkg-config
> checking for libnghttp2 options with pkg-config... no
400,403c403,404
< checking if inet_ntop is prototyped... yes
< checking if inet_ntop is compilable... yes
< checking if inet_ntop usage allowed... yes
< checking if inet_ntop might be used... yes
---
> checking if inet_ntop is prototyped... no
> checking if inet_ntop might be used... no
405,408c406,407
< checking if inet_pton is prototyped... yes
< checking if inet_pton is compilable... yes
< checking if inet_pton usage allowed... yes
< checking if inet_pton might be used... yes
---
> checking if inet_pton is prototyped... no
> checking if inet_pton might be used... no
421,422c420,422
< checking if ioctlsocket FIONBIO is compilable... no
< checking if ioctlsocket FIONBIO might be used... no
---
> checking if ioctlsocket FIONBIO is compilable... yes
> checking if ioctlsocket FIONBIO usage allowed... yes
> checking if ioctlsocket FIONBIO might be used... yes
525,526c525
< checking how to set a socket into non-blocking mode... unknown
< configure: WARNING: cannot determine non-blocking socket method.
---
> checking how to set a socket into non-blocking mode... ioctlsocket FIONBIO
599c598
<   Install prefix:   /deps
---
>   Install prefix:   /usr/local
skeeto commented 1 day ago

This is an old curl bug that makes it incompatible with GCC 14 and later. It's already been fixed in curl 8.8.0 (see curl commit b65f0e04). You can work around it in older releases by adding -fpermissive to CFLAGS. This is like the -fcommon thing a few years back. Your system cross compiler is an older GCC, so there was no problem.

The Autoconf feature test is, as is often the case, silently broken and so it drew the wrong conclusions, assuming the test failed due to a missing feature rather than that the test had undefined behavior.

Edit: https://github.com/curl/curl/commit/b65f0e04b90b37882c731f448a36812ac84e6472

skeeto commented 1 day ago

While the details are still loaded in my mind, I'm unsure of your goal because you're just copying the libcurl-4.dll and nothing else — headers, pkg-config .pc, curl-config, import library, nor even curl.exe — which by itself doesn't seem terribly useful. Currently I think busybox-w32 wget does a fine enough job, but if I were adding a curl command to w64dk I'd skip the install target, and therefore --prefix, and do this:

WORKDIR /curl-$CURL_VERSION
RUN ./configure \
        --host=$ARCH \
        --disable-shared \
        --with-schannel \
        CFLAGS="-Os" \
        LDFLAGS="-s" \
 && make -j$(nproc) \
 && cp src/curl.exe $PREFIX/bin/

Builds in place and then manually copies the distributed artifact into place (much like GDB and others). The --disable-shared produces a standalone curl program, no libcurl-4.dll needed.

Semphriss commented 1 day ago

Thanks for the extra info! I'll give it a try whenever I can.

As for why I do this, I'm only including it because it's one of Git's few mandatory dependencies. I'm keeping it as a shared library because Git creates a bunch of executables, and copying libcurl entirely in each of those executables would be space-hungry. I'm not using the command or developing against libcurl with w64devkit, so I'm not keeping the extras. I've omitted all that in this issue to keep the reproduction steps as minimal as possible, but indeed, without those details, my intentions may look strange :)

Semphriss commented 1 day ago

I've tested it and it works, thanks! I'll close this as a non-bug, since the issue was with curl.