[cpp-msbuild] branch main updated: Check in legacy curl winbuild files
Codeberg
noreply at shibboleth.net
Wed Mar 11 17:08:16 UTC 2026
This is an automated email from the git hooks/post-receive script.
codeberg pushed a commit to branch main
in repository cpp-msbuild.
View the commit online:
https://codeberg.org/Shibboleth/cpp-msbuild/commit/492950ad488d50b7e3f089a810a9ed79e7c98c03
The following commit(s) were added to refs/heads/main by this push:
new 492950a Check in legacy curl winbuild files
492950a is described below
commit 492950ad488d50b7e3f089a810a9ed79e7c98c03
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Mar 11 13:08:06 2026 -0400
Check in legacy curl winbuild files
---
dependencies/curl/winbuild/Makefile.vc | 305 +++++++++++
dependencies/curl/winbuild/MakefileBuild.vc | 758 ++++++++++++++++++++++++++++
dependencies/curl/winbuild/README.md | 207 ++++++++
dependencies/curl/winbuild/makedebug.bat | 33 ++
4 files changed, 1303 insertions(+)
diff --git a/dependencies/curl/winbuild/Makefile.vc b/dependencies/curl/winbuild/Makefile.vc
new file mode 100644
index 0000000..0f959fd
--- /dev/null
+++ b/dependencies/curl/winbuild/Makefile.vc
@@ -0,0 +1,305 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, <daniel at haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+#***************************************************************************
+
+!MESSAGE
+!MESSAGE WARNING:
+!MESSAGE
+!MESSAGE The winbuild build system is deprecated and will be removed in
+!MESSAGE September 2025 in favor of the CMake build system.
+!MESSAGE
+!MESSAGE Please see docs/INSTALL-CMAKE.md : "Migrating from winbuild builds"
+!MESSAGE
+!MESSAGE To use the winbuild build system you must acknowledge this warning by
+!MESSAGE setting command line option WINBUILD_ACKNOWLEDGE_DEPRECATED=yes
+!MESSAGE
+
+!IF "$(MODE)"=="static"
+TARGET = $(LIB_NAME_STATIC)
+AS_DLL = false
+CFGSET=true
+!ELSEIF "$(MODE)"=="dll"
+TARGET = $(LIB_NAME_DLL)
+AS_DLL = true
+CFGSET=true
+!ELSE
+!MESSAGE Invalid mode: $(MODE)
+
+#######################
+# Usage
+#
+
+!MESSAGE See winbuild/README.md for usage
+!ERROR please choose a valid mode
+
+!ENDIF
+
+!INCLUDE "../lib/Makefile.inc"
+CSOURCES=$(CSOURCES: = )
+LIBCURL_OBJS=$(CSOURCES:.c=.obj)
+
+!INCLUDE "../src/Makefile.inc"
+CURL_CFILES=$(CURL_CFILES: = )
+CURL_OBJS=$(CURL_CFILES:.c=.obj)
+
+
+# backwards compatible check for USE_SSPI
+!IFDEF USE_SSPI
+ENABLE_SSPI = $(USE_SSPI)
+!ENDIF
+
+# default options
+
+!IFNDEF MACHINE
+# Note: nmake magically changes the value of PROCESSOR_ARCHITECTURE from "AMD64"
+# to "x86" when building in a 32 bit build environment on a 64 bit machine.
+!IF "$(PROCESSOR_ARCHITECTURE)"=="AMD64"
+MACHINE = x64
+!ELSE
+MACHINE = x86
+!ENDIF
+!ENDIF
+
+!IFNDEF ENABLE_IDN
+USE_IDN = true
+!ELSEIF "$(ENABLE_IDN)"=="yes"
+USE_IDN = true
+!ELSEIF "$(ENABLE_IDN)"=="no"
+USE_IDN = false
+!ENDIF
+
+!IFNDEF ENABLE_IPV6
+USE_IPV6 = true
+!ELSEIF "$(ENABLE_IPV6)"=="yes"
+USE_IPV6 = true
+!ELSEIF "$(ENABLE_IPV6)"=="no"
+USE_IPV6 = false
+!ENDIF
+
+!IFNDEF ENABLE_SSPI
+USE_SSPI = true
+!ELSEIF "$(ENABLE_SSPI)"=="yes"
+USE_SSPI = true
+!ELSEIF "$(ENABLE_SSPI)"=="no"
+USE_SSPI = false
+!ENDIF
+
+!IFNDEF ENABLE_SCHANNEL
+!IF DEFINED(WITH_SSL) || DEFINED(WITH_MBEDTLS) || DEFINED(WITH_WOLFSSL)
+USE_SCHANNEL = false
+!ELSE
+USE_SCHANNEL = $(USE_SSPI)
+!ENDIF
+!ELSEIF "$(ENABLE_SCHANNEL)"=="yes"
+USE_SCHANNEL = true
+!ELSEIF "$(ENABLE_SCHANNEL)"=="no"
+USE_SCHANNEL = false
+!ENDIF
+
+!IFNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG
+ENABLE_OPENSSL_AUTO_LOAD_CONFIG = true
+!ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="yes"
+!UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG
+ENABLE_OPENSSL_AUTO_LOAD_CONFIG = true
+!ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="no"
+!UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG
+ENABLE_OPENSSL_AUTO_LOAD_CONFIG = false
+!ENDIF
+
+!IFNDEF ENABLE_UNICODE
+USE_UNICODE = false
+!ELSEIF "$(ENABLE_UNICODE)"=="yes"
+USE_UNICODE = true
+!ELSEIF "$(ENABLE_UNICODE)"=="no"
+USE_UNICODE = false
+!ENDIF
+
+CONFIG_NAME_LIB = libcurl
+
+!IF "$(WITH_SSL)"=="dll"
+USE_SSL = true
+SSL = dll
+!ELSEIF "$(WITH_SSL)"=="static"
+USE_SSL = true
+SSL = static
+!ENDIF
+
+!IF "$(ENABLE_NGHTTP2)"=="yes"
+# compatibility bit, WITH_NGHTTP2 is the correct flag
+WITH_NGHTTP2 = dll
+USE_NGHTTP2 = true
+NGHTTP2 = dll
+!ELSEIF "$(WITH_NGHTTP2)"=="dll"
+USE_NGHTTP2 = true
+NGHTTP2 = dll
+!ELSEIF "$(WITH_NGHTTP2)"=="static"
+USE_NGHTTP2 = true
+NGHTTP2 = static
+!ENDIF
+
+!IFNDEF USE_NGHTTP2
+USE_NGHTTP2 = false
+!ENDIF
+
+!IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"
+USE_MBEDTLS = true
+MBEDTLS = $(WITH_MBEDTLS)
+!ENDIF
+
+!IF "$(WITH_WOLFSSL)"=="dll" || "$(WITH_WOLFSSL)"=="static"
+USE_WOLFSSL = true
+WOLFSSL = $(WITH_WOLFSSL)
+!ENDIF
+
+!IF "$(WITH_CARES)"=="dll"
+USE_CARES = true
+CARES = dll
+!ELSEIF "$(WITH_CARES)"=="static"
+USE_CARES = true
+CARES = static
+!ENDIF
+
+!IF "$(WITH_ZLIB)"=="dll"
+USE_ZLIB = true
+ZLIB = dll
+!ELSEIF "$(WITH_ZLIB)"=="static"
+USE_ZLIB = true
+ZLIB = static
+!ENDIF
+
+!IF "$(WITH_SSH2)"=="dll"
+USE_SSH2 = true
+SSH2 = dll
+!ELSEIF "$(WITH_SSH2)"=="static"
+USE_SSH2 = true
+SSH2 = static
+!ENDIF
+
+!IF "$(WITH_SSH)"=="dll"
+USE_SSH = true
+SSH = dll
+!ELSEIF "$(WITH_SSH)"=="static"
+USE_SSH = true
+SSH = static
+!ENDIF
+
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-vc$(VC)-$(MACHINE)
+
+!IF "$(DEBUG)"=="yes"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-debug
+!ELSE
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-release
+!ENDIF
+
+!IF "$(AS_DLL)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-dll
+!ELSE
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-static
+!ENDIF
+
+!IF "$(USE_SSL)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssl-$(SSL)
+!ENDIF
+
+!IF "$(USE_MBEDTLS)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-mbedtls-$(MBEDTLS)
+!ENDIF
+
+!IF "$(USE_WOLFSSL)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-wolfssl-$(WOLFSSL)
+!ENDIF
+
+!IF "$(USE_CARES)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-cares-$(CARES)
+!ENDIF
+
+!IF "$(USE_ZLIB)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB)
+!ENDIF
+
+!IF "$(USE_SSH2)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh2-$(SSH2)
+!ENDIF
+
+!IF "$(USE_SSH)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh-$(SSH)
+!ENDIF
+
+!IF "$(USE_IPV6)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ipv6
+!ENDIF
+
+!IF "$(USE_SSPI)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi
+!ENDIF
+
+!IF "$(USE_SCHANNEL)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-schannel
+!ENDIF
+
+!IF "$(USE_NGHTTP2)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-nghttp2-$(NGHTTP2)
+!ENDIF
+
+!MESSAGE configuration name: $(CONFIG_NAME_LIB)
+
+# Note these directories are removed by this makefile's 'clean' so they should
+# not be changed to point to user-specified directories that may contain other
+# data. MakefileBuild.vc uses the same variable names but allows some user
+# changes and therefore does not remove the directories.
+BUILD_DIR=../builds/$(CONFIG_NAME_LIB)
+LIBCURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib
+CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl
+DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\
+
+$(MODE):
+ @echo LIBCURL_OBJS = \> LIBCURL_OBJS.inc
+ @for %%i in ($(LIBCURL_OBJS)) do @echo $(LIBCURL_DIROBJ)/%%i \>> LIBCURL_OBJS.inc
+ @echo. >> LIBCURL_OBJS.inc
+
+ @echo CURL_OBJS = \> CURL_OBJS.inc
+ @for %%i in ($(CURL_OBJS)) do @echo $(CURL_DIROBJ)/%%i \>> CURL_OBJS.inc
+ @echo. >> CURL_OBJS.inc
+
+ @SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB)
+ @SET MACHINE=$(MACHINE)
+ @SET USE_NGHTTP2=$(USE_NGHTTP2)
+ @SET USE_IDN=$(USE_IDN)
+ @SET USE_IPV6=$(USE_IPV6)
+ @SET USE_SSPI=$(USE_SSPI)
+ @SET USE_SCHANNEL=$(USE_SCHANNEL)
+ @SET USE_UNICODE=$(USE_UNICODE)
+# compatibility bit
+ @SET WITH_NGHTTP2=$(WITH_NGHTTP2)
+
+ @$(MAKE) /NOLOGO /F MakefileBuild.vc
+
+copy_from_lib:
+ echo copying .c...
+ FOR %%i IN ($(CURLX_CFILES:/=\)) DO copy %%i ..\src\
+
+clean:
+ @if exist $(LIBCURL_DIROBJ) rd /s /q $(LIBCURL_DIROBJ)
+ @if exist $(CURL_DIROBJ) rd /s /q $(CURL_DIROBJ)
+ @if exist $(DIRDIST) rd /s /q $(DIRDIST)
+ $(MAKE) /NOLOGO /F MakefileBuild.vc $@
diff --git a/dependencies/curl/winbuild/MakefileBuild.vc b/dependencies/curl/winbuild/MakefileBuild.vc
new file mode 100644
index 0000000..716846f
--- /dev/null
+++ b/dependencies/curl/winbuild/MakefileBuild.vc
@@ -0,0 +1,758 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) Daniel Stenberg, <daniel at haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+#***************************************************************************
+
+###########################################################################
+#
+# Makefile for building libcurl with MSVC
+#
+# Usage: see README.md
+#
+##############################################################
+
+CFGSET=FALSE
+WINBUILD_DIR=`cd`
+
+# Utilities.
+# If a path is required that contains characters such as space, quote the path.
+MT = mt.exe
+RC = rc.exe
+ZIP = zip.exe
+
+# Allow changing C compiler via environment variable CC (default cl.exe)
+# This command macro is not set by default: https://msdn.microsoft.com/en-us/library/ms933742.aspx
+!If "$(CC)" == ""
+CC = cl.exe
+!Endif
+
+!IF "$(VC)"=="6"
+CC_NODEBUG = $(CC) /O2 /DNDEBUG
+CC_DEBUG = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
+CFLAGS = /I. /I../lib /I../include /nologo /W4 /GX /YX /FD /c /DBUILDING_LIBCURL
+!ELSE
+CC_NODEBUG = $(CC) /O2 /DNDEBUG
+CC_DEBUG = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd
+CFLAGS = /I. /I../lib /I../include /nologo /W4 /EHsc /FD /c /DBUILDING_LIBCURL
+!ENDIF
+
+LFLAGS = /nologo /machine:$(MACHINE)
+LNKDLL = link.exe /DLL
+# Use lib.exe instead of link.exe as link.exe /lib has the following bad habits:
+# - optimizing options like /opt:ref raises warnings (at least in Visual Studio 2015)
+# - all (including Windows) dependencies are aggregated (as static parts)
+# - link.exe /lib is not documented (anymore) at MSDN
+# Instead of id: just create an archive, that contains all objects
+LNKLIB = lib.exe
+
+CFLAGS_PDB = /Zi
+LFLAGS_PDB = /incremental:no /opt:ref,icf /DEBUG
+
+CFLAGS_LIBCURL_STATIC = /DCURL_STATICLIB
+
+# SEC: Needed to add Iphlpapi.lib here to account for function call inside url.c
+WIN_LIBS = ws2_32.lib wldap32.lib advapi32.lib crypt32.lib secur32.lib Iphlpapi.lib
+
+BASE_NAME = libcurl
+BASE_NAME_DEBUG = $(BASE_NAME)_debug
+BASE_NAME_STATIC = $(BASE_NAME)_a
+BASE_NAME_STATIC_DEBUG = $(BASE_NAME_STATIC)_debug
+
+LIB_NAME_STATIC = $(BASE_NAME_STATIC).lib
+LIB_NAME_STATIC_DEBUG = $(BASE_NAME_STATIC_DEBUG).lib
+LIB_NAME_DLL = $(BASE_NAME).dll
+LIB_NAME_IMP = $(BASE_NAME).lib
+LIB_NAME_DLL_DEBUG = $(BASE_NAME_DEBUG).dll
+LIB_NAME_IMP_DEBUG = $(BASE_NAME_DEBUG).lib
+
+PDB_NAME_STATIC = $(BASE_NAME_STATIC).pdb
+PDB_NAME_STATIC_DEBUG = $(BASE_NAME_STATIC_DEBUG).pdb
+PDB_NAME_DLL = $(BASE_NAME).pdb
+PDB_NAME_DLL_DEBUG = $(BASE_NAME_DEBUG).pdb
+
+# CURL Command section
+PROGRAM_NAME = curl.exe
+CURL_CFLAGS = /I../lib /I../lib/curlx /I../include /nologo /W4 /EHsc /FD /c
+CURL_LFLAGS = /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console $(LFLAGS)
+CURL_RESFLAGS = /i../include
+
+#############################################################
+## Nothing more to do below this line!
+LIBCURL_SRC_DIR = ..\lib
+CURL_SRC_DIR = ..\src
+
+!IF EXISTS($(CURL_SRC_DIR)\tool_hugehelp.c)
+USE_MANUAL = true
+CFLAGS = $(CFLAGS) /DUSE_MANUAL
+!ENDIF
+
+!IFNDEF WITH_DEVEL
+WITH_DEVEL = ../../deps
+!ENDIF
+DEVEL_INCLUDE= $(WITH_DEVEL)/include
+DEVEL_LIB = $(WITH_DEVEL)/lib
+
+!IF EXISTS("$(DEVEL_INCLUDE)")
+CFLAGS = $(CFLAGS) /I"$(DEVEL_INCLUDE)"
+!ENDIF
+!IF EXISTS("$(DEVEL_LIB)")
+LFLAGS = $(LFLAGS) "/LIBPATH:$(DEVEL_LIB)"
+!ENDIF
+
+!IFDEF SSL_PATH
+SSL_INC_DIR = $(SSL_PATH)\include
+SSL_LIB_DIR = $(SSL_PATH)\lib
+SSL_LFLAGS = $(SSL_LFLAGS) "/LIBPATH:$(SSL_LIB_DIR)"
+!ELSE
+SSL_INC_DIR=$(DEVEL_INCLUDE)\openssl
+SSL_LIB_DIR=$(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_SSL)"=="dll" || "$(WITH_SSL)"=="static"
+!IF EXISTS("$(SSL_LIB_DIR)\libssl.lib")
+SSL_LIBS = libssl.lib libcrypto.lib
+!ELSE
+SSL_LIBS = libeay32.lib ssleay32.lib
+!ENDIF
+USE_SSL = true
+SSL = $(WITH_SSL)
+!IF "$(WITH_SSL)"=="static"
+WIN_LIBS = $(WIN_LIBS) gdi32.lib user32.lib crypt32.lib
+!ENDIF
+!ENDIF
+
+!IFDEF USE_SSL
+SSL_CFLAGS = /DUSE_OPENSSL /I"$(SSL_INC_DIR)"
+!IF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="false"
+SSL_CFLAGS = $(SSL_CFLAGS) /DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG
+!ENDIF
+!ENDIF
+
+!IF "$(DISABLE_WEBSOCKETS)"=="true"
+CFLAGS = $(CFLAGS) /DCURL_DISABLE_WEBSOCKETS=1
+!ENDIF
+
+!IFDEF NGHTTP2_PATH
+NGHTTP2_INC_DIR = $(NGHTTP2_PATH)\include
+NGHTTP2_LIB_DIR = $(NGHTTP2_PATH)\lib
+NGHTTP2_LFLAGS = $(NGHTTP2_LFLAGS) "/LIBPATH:$(NGHTTP2_LIB_DIR)"
+!ELSE
+NGHTTP2_INC_DIR = $(DEVEL_INCLUDE)
+NGHTTP2_LIB_DIR = $(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_NGHTTP2)"=="dll"
+NGHTTP2_CFLAGS = /DUSE_NGHTTP2 /I"$(NGHTTP2_INC_DIR)"
+NGHTTP2_LIBS = nghttp2.lib
+!ELSEIF "$(WITH_NGHTTP2)"=="static"
+NGHTTP2_CFLAGS = /DUSE_NGHTTP2 /DNGHTTP2_STATICLIB /I"$(NGHTTP2_INC_DIR)"
+!IF EXISTS("$(NGHTTP2_LIB_DIR)\nghttp2_static.lib")
+NGHTTP2_LIBS = nghttp2_static.lib
+!ELSE
+NGHTTP2_LIBS = nghttp2.lib
+!ENDIF
+!ENDIF
+
+!IFDEF MBEDTLS_PATH
+MBEDTLS_INC_DIR = $(MBEDTLS_PATH)\include
+MBEDTLS_LIB_DIR = $(MBEDTLS_PATH)\lib
+MBEDTLS_LFLAGS = $(MBEDTLS_LFLAGS) "/LIBPATH:$(MBEDTLS_LIB_DIR)"
+!ELSE
+MBEDTLS_INC_DIR = $(DEVEL_INCLUDE)
+MBEDTLS_LIB_DIR = $(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"
+USE_MBEDTLS = true
+MBEDTLS = $(WITH_MBEDTLS)
+MBEDTLS_CFLAGS = /DUSE_MBEDTLS /I"$(MBEDTLS_INC_DIR)"
+MBEDTLS_LIBS = mbedtls.lib mbedcrypto.lib mbedx509.lib
+!ENDIF
+
+!IFDEF WOLFSSL_PATH
+WOLFSSL_INC_DIR = $(WOLFSSL_PATH)\include
+WOLFSSL_LIB_DIR = $(WOLFSSL_PATH)\lib
+WOLFSSL_LFLAGS = $(WOLFSSL_LFLAGS) "/LIBPATH:$(WOLFSSL_LIB_DIR)"
+!ELSE
+WOLFSSL_INC_DIR = $(DEVEL_INCLUDE)
+WOLFSSL_LIB_DIR = $(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_WOLFSSL)"=="dll" || "$(WITH_WOLFSSL)"=="static"
+USE_WOLFSSL = true
+WOLFSSL = $(WITH_WOLFSSL)
+WOLFSSL_CFLAGS = /DUSE_WOLFSSL /I"$(WOLFSSL_INC_DIR)"
+WOLFSSL_LIBS = wolfssl.lib
+!ENDIF
+
+
+!IFDEF CARES_PATH
+CARES_INC_DIR = $(CARES_PATH)\include
+CARES_LIB_DIR = $(CARES_PATH)\lib
+CARES_LFLAGS = $(CARES_LFLAGS) "/LIBPATH:$(CARES_LIB_DIR)"
+!ELSE
+CARES_INC_DIR = $(DEVEL_INCLUDE)/cares
+CARES_LIB_DIR = $(DEVEL_LIB)
+!ENDIF
+
+!IF "$(WITH_CARES)"=="dll"
+!IF "$(DEBUG)"=="yes"
+CARES_LIBS = caresd.lib
+!ELSE
+CARES_LIBS = cares.lib
+!ENDIF
+USE_CARES = true
+CARES = dll
+!ELSEIF "$(WITH_CARES)"=="static"
+!IF "$(DEBUG)"=="yes"
+CARES_LIBS = libcaresd.lib
+!ELSE
+CARES_LIBS = libcares.lib
+!ENDIF
+USE_CARES = true
+CARES = static
+!ENDIF
+
+!IFDEF USE_CARES
+CARES_CFLAGS = /DUSE_ARES /I"$(CARES_INC_DIR)"
+!IF "$(CARES)"=="static"
+CARES_CFLAGS = $(CARES_CFLAGS) /DCARES_STATICLIB
+!ENDIF
+!ENDIF
+
+
+!IFDEF ZLIB_PATH
+ZLIB_INC_DIR = $(ZLIB_PATH)\include
+ZLIB_LIB_DIR = $(ZLIB_PATH)\lib
+ZLIB_LFLAGS = $(ZLIB_LFLAGS) "/LIBPATH:$(ZLIB_LIB_DIR)"
+!ELSE
+ZLIB_INC_DIR = $(DEVEL_INCLUDE)
+ZLIB_LIB_DIR = $(DEVEL_LIB)
+!ENDIF
+
+# Depending on how zlib is built the libraries have different names, we
+# try to handle them all.
+!IF "$(WITH_ZLIB)"=="dll"
+!IF EXISTS("$(ZLIB_LIB_DIR)\zlibwapi.lib")
+ZLIB_LIBS = zlibwapi.lib
+ADDITIONAL_ZLIB_CFLAGS = /DZLIB_WINAPI
+!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zdll.lib")
+ZLIB_LIBS = zdll.lib
+!ELSE
+ZLIB_LIBS = zlib.lib
+!ENDIF
+USE_ZLIB = true
+ZLIB = dll
+!ELSEIF "$(WITH_ZLIB)"=="static"
+!IF EXISTS("$(ZLIB_LIB_DIR)\zlibstat.lib")
+ZLIB_LIBS = zlibstat.lib
+ADDITIONAL_ZLIB_CFLAGS = /DZLIB_WINAPI
+!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zlibstatic.lib")
+ZLIB_LIBS = zlibstatic.lib
+!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zlib.lib")
+ZLIB_LIBS = zlib.lib
+!ELSE
+ZLIB_LIBS = zlib_a.lib
+!ENDIF
+USE_ZLIB = true
+ZLIB = static
+!ENDIF
+
+!IFDEF USE_ZLIB
+ZLIB_CFLAGS = /DHAVE_LIBZ $(ADDITIONAL_ZLIB_CFLAGS) /I"$(ZLIB_INC_DIR)"
+!ENDIF
+
+
+!IFDEF SSH2_PATH
+SSH2_INC_DIR= $(SSH2_PATH)\include
+SSH2_LIB_DIR= $(SSH2_PATH)\lib
+SSH2_LFLAGS = $(SSH2_LFLAGS) "/LIBPATH:$(SSH2_LIB_DIR)"
+!ELSE
+SSH2_LIB_DIR= $(DEVEL_LIB)
+SSH2_INC_DIR= $(DEVEL_INCLUDE)/libssh2
+!ENDIF
+
+!IF "$(WITH_SSH2)"=="dll"
+SSH2_LIBS = libssh2.lib
+USE_SSH2 = true
+SSH2 = dll
+!ELSEIF "$(WITH_SSH2)"=="static"
+# libssh2 NMakefile on Windows at default creates a static library without _a suffix
+!IF EXISTS("$(SSH2_LIB_DIR)\libssh2.lib")
+SSH2_LIBS = libssh2.lib
+!ELSE
+SSH2_LIBS = libssh2_a.lib
+!ENDIF
+WIN_LIBS = $(WIN_LIBS) user32.lib
+USE_SSH2 = true
+SSH2 = static
+!ENDIF
+
+!IFDEF USE_SSH2
+SSH2_CFLAGS = /DUSE_LIBSSH2
+SSH2_CFLAGS = $(SSH2_CFLAGS) /I"$(SSH2_INC_DIR)"
+!ENDIF
+
+
+!IFDEF SSH_PATH
+SSH_INC_DIR= $(SSH_PATH)\include
+SSH_LIB_DIR= $(SSH_PATH)\lib
+SSH_LFLAGS = $(SSH_LFLAGS) "/LIBPATH:$(SSH_LIB_DIR)"
+!ELSE
+SSH_LIB_DIR= $(DEVEL_LIB)
+SSH_INC_DIR= $(DEVEL_INCLUDE)
+!ENDIF
+
+!IF "$(WITH_SSH)"=="dll" || "$(WITH_SSH)"=="static"
+SSH_LIBS = ssh.lib
+USE_SSH = true
+SSH = $(WITH_SSH)
+!ENDIF
+
+!IFDEF USE_SSH
+SSH_CFLAGS = /DUSE_LIBSSH
+SSH_CFLAGS = $(SSH_CFLAGS) /I"$(SSH_INC_DIR)"
+!ENDIF
+
+
+!IFNDEF USE_IDN
+USE_IDN = true
+!ELSEIF "$(USE_IDN)"=="yes"
+USE_IDN = true
+!ENDIF
+
+!IF "$(USE_IDN)"=="true"
+IDN_CFLAGS = $(IDN_CFLAGS) /DUSE_WIN32_IDN
+WIN_LIBS = $(WIN_LIBS) Normaliz.lib
+!ENDIF
+
+
+!IFNDEF USE_IPV6
+USE_IPV6 = true
+!ELSEIF "$(USE_IPV6)"=="yes"
+USE_IPV6 = true
+!ENDIF
+
+!IF "$(USE_IPV6)"=="true"
+IPV6_CFLAGS = $(IPV6_CFLAGS) /DUSE_IPV6
+!ENDIF
+
+
+!IFNDEF USE_SSPI
+USE_SSPI = true
+!ELSEIF "$(USE_SSPI)"=="yes"
+USE_SSPI = true
+!ENDIF
+
+!IF "$(USE_SSPI)"=="true"
+SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_WINDOWS_SSPI
+!ENDIF
+
+
+!IFNDEF USE_SCHANNEL
+!IF "$(USE_SSL)"=="true"
+USE_SCHANNEL = false
+!ELSE
+USE_SCHANNEL = $(USE_SSPI)
+!ENDIF
+!ELSEIF "$(USE_SCHANNEL)"=="yes"
+USE_SCHANNEL = true
+!ENDIF
+
+
+!IF "$(USE_SCHANNEL)"=="true"
+!IF "$(USE_SSPI)"!="true"
+!ERROR cannot build with Schannel without SSPI
+!ENDIF
+SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_SCHANNEL
+WIN_LIBS = $(WIN_LIBS) Crypt32.lib
+!ENDIF
+
+
+!IF "$(GEN_PDB)"=="yes"
+GEN_PDB = true
+!ENDIF
+
+
+!IFDEF EMBED_MANIFEST
+MANIFESTTOOL = $(MT) -manifest $(DIRDIST)\bin\$(PROGRAM_NAME).manifest -outputresource:$(DIRDIST)\bin\$(PROGRAM_NAME);1
+!ENDIF
+
+# Runtime library configuration
+!IF "$(RTLIBCFG)"=="static"
+RTLIB = /MT
+RTLIB_DEBUG = /MTd
+!ELSE
+RTLIB = /MD
+RTLIB_DEBUG = /MDd
+!ENDIF
+
+!IF "$(MODE)"=="static"
+TARGET = $(LIB_NAME_STATIC)
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)
+AS_DLL = false
+CFGSET = true
+!ELSEIF "$(MODE)"=="dll"
+TARGET = $(LIB_NAME_DLL)
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)
+AS_DLL = true
+CFGSET = true
+!ENDIF
+
+!IF "$(CFGSET)" == "FALSE"
+!ERROR please choose a valid mode
+!ENDIF
+
+
+# CURL_XX macros are for the curl.exe command
+
+!IF "$(DEBUG)"=="yes"
+RC_FLAGS = /d_DEBUG /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
+CURL_CC = $(CC_DEBUG) $(RTLIB_DEBUG)
+CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /d_DEBUG /Fo $@ $(CURL_SRC_DIR)\curl.rc
+!ELSE
+RC_FLAGS = /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
+CURL_CC = $(CC_NODEBUG) $(RTLIB)
+CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /Fo $@ $(CURL_SRC_DIR)\curl.rc
+!ENDIF
+
+!IF "$(AS_DLL)" == "true"
+
+LNK = $(LNKDLL) $(LFLAGS) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)
+!IF "$(DEBUG)"=="yes"
+TARGET = $(LIB_NAME_DLL_DEBUG)
+LNK = $(LNK) /DEBUG /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)
+PDB = $(PDB_NAME_DLL_DEBUG)
+CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)
+!ELSE
+TARGET = $(LIB_NAME_DLL)
+LNK = $(LNK) /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)
+PDB = $(PDB_NAME_DLL)
+CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)
+!ENDIF
+RESOURCE = $(LIB_DIROBJ)\libcurl.res
+
+# AS_DLL
+!ELSE
+
+!IF "$(DEBUG)"=="yes"
+TARGET = $(LIB_NAME_STATIC_DEBUG)
+PDB = $(PDB_NAME_STATIC_DEBUG)
+!ELSE
+TARGET = $(LIB_NAME_STATIC)
+PDB = $(PDB_NAME_STATIC)
+!ENDIF
+LNK = $(LNKLIB) /out:$(LIB_DIROBJ)\$(TARGET)
+CURL_CC = $(CURL_CC) $(CFLAGS_LIBCURL_STATIC)
+
+# AS_DLL
+!ENDIF
+
+!IF "$(USE_SSL)"=="true"
+CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
+LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(SSL_LIBS)
+!ENDIF
+
+!IF "$(USE_MBEDTLS)"=="true"
+CFLAGS = $(CFLAGS) $(MBEDTLS_CFLAGS)
+LFLAGS = $(LFLAGS) $(MBEDTLS_LFLAGS) $(MBEDTLS_LIBS)
+!ENDIF
+
+!IF "$(USE_WOLFSSL)"=="true"
+CFLAGS = $(CFLAGS) $(WOLFSSL_CFLAGS)
+LFLAGS = $(LFLAGS) $(WOLFSSL_LFLAGS) $(WOLFSSL_LIBS)
+!ENDIF
+
+!IF "$(USE_CARES)"=="true"
+CFLAGS = $(CFLAGS) $(CARES_CFLAGS)
+LFLAGS = $(LFLAGS) $(CARES_LFLAGS) $(CARES_LIBS)
+!ENDIF
+
+!IF "$(USE_ZLIB)"=="true"
+CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
+LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) $(ZLIB_LIBS)
+!ENDIF
+
+!IF "$(USE_SSH2)"=="true"
+CFLAGS = $(CFLAGS) $(SSH2_CFLAGS)
+LFLAGS = $(LFLAGS) $(SSH2_LFLAGS) $(SSH2_LIBS)
+!ENDIF
+
+!IF "$(USE_SSH)"=="true"
+CFLAGS = $(CFLAGS) $(SSH_CFLAGS)
+LFLAGS = $(LFLAGS) $(SSH_LFLAGS) $(SSH_LIBS)
+!ENDIF
+
+!IF "$(USE_IDN)"=="true"
+CFLAGS = $(CFLAGS) $(IDN_CFLAGS)
+!ENDIF
+
+!IF "$(USE_IPV6)"=="true"
+CFLAGS = $(CFLAGS) $(IPV6_CFLAGS)
+!ENDIF
+
+!IF "$(USE_SSPI)"=="true"
+CFLAGS = $(CFLAGS) $(SSPI_CFLAGS)
+!ENDIF
+
+!IF "$(USE_NGHTTP2)"=="true"
+CFLAGS = $(CFLAGS) $(NGHTTP2_CFLAGS)
+LFLAGS = $(LFLAGS) $(NGHTTP2_LFLAGS) $(NGHTTP2_LIBS)
+!ENDIF
+
+!IF "$(GEN_PDB)"=="true"
+CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)"
+LFLAGS = $(LFLAGS) $(LFLAGS_PDB)
+!ENDIF
+
+!IF ( "$(USE_SSL)"=="true" && "$(USE_SCHANNEL)"=="true" ) \
+ || ( "$(USE_SSL)"=="true" && "$(USE_MBEDTLS)"=="true" ) \
+ || ( "$(USE_SSL)"=="true" && "$(USE_WOLFSSL)"=="true" ) \
+ || ( "$(USE_MBEDTLS)"=="true" && "$(USE_WOLFSSL)"=="true" ) \
+ || ( "$(USE_MBEDTLS)"=="true" && "$(USE_SCHANNEL)"=="true" ) \
+ || ( "$(USE_WOLFSSL)"=="true" && "$(USE_SCHANNEL)"=="true" )
+CFLAGS = $(CFLAGS) /DCURL_WITH_MULTI_SSL
+!ENDIF
+
+!IF "$(USE_UNICODE)"=="true"
+CFLAGS = $(CFLAGS) /DUNICODE /D_UNICODE
+!ENDIF
+
+LIB_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib
+CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl
+
+!IFDEF WITH_PREFIX
+DIRDIST = $(WITH_PREFIX)
+!ELSE
+DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\
+!ENDIF
+
+#
+# curl.exe
+#
+CURL_LINK = link.exe /incremental:no /libpath:"$(DIRDIST)\lib"
+
+!IF "$(CFGSET)" != "FALSE"
+# A mode was provided, so the library can be built.
+#
+!include CURL_OBJS.inc
+!include LIBCURL_OBJS.inc
+
+!IF "$(AS_DLL)" == "true"
+LIB_OBJS = $(LIBCURL_OBJS) $(RESOURCE)
+!ELSE
+LIB_OBJS = $(LIBCURL_OBJS)
+!ENDIF
+
+EXE_OBJS = $(CURL_OBJS) $(CURL_DIROBJ)\curl.res
+
+all : $(TARGET) $(PROGRAM_NAME)
+
+package: $(TARGET)
+ @cd $(DIRDIST)
+ @-$(ZIP) -9 -q -r ..\$(CONFIG_NAME_LIB).zip .>nul 2<&1
+ @cd $(MAKEDIR)
+
+$(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DIRDIST)
+ @echo Using SSL: $(USE_SSL)
+ @echo Using NGHTTP2: $(USE_NGHTTP2)
+ @echo Using c-ares: $(USE_CARES)
+ @echo Using SSH2: $(USE_SSH2)
+ @echo Using SSH: $(USE_SSH)
+ @echo Using ZLIB: $(USE_ZLIB)
+ @echo Using IDN: $(USE_IDN)
+ @echo Using IPv6: $(USE_IPV6)
+ @echo Using SSPI: $(USE_SSPI)
+ @echo Using Schannel: $(USE_SCHANNEL)
+ @echo CFLAGS: $(CFLAGS)
+ @echo LFLAGS: $(LFLAGS)
+ @echo GenPDB: $(GEN_PDB)
+ @echo Debug: $(DEBUG)
+ @echo Machine: $(MACHINE)
+ $(LNK) $(LIB_OBJS)
+ @echo Copying libs...
+ @if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL) $(DIRDIST)\bin\ /y >nul 2<&1
+ @if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC) $(DIRDIST)\lib\ /y >nul 2<&1
+ @if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) $(DIRDIST)\bin\ /y >nul 2<&1
+ @if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) $(DIRDIST)\lib\ /y >nul 2<&1
+ @if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP) $(DIRDIST)\lib\ /y >nul 2<&1
+ @if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) $(DIRDIST)\lib >nul 2<&1
+ @-copy $(LIB_DIROBJ)\*.exp $(DIRDIST)\lib /y >nul 2<&1
+ @-copy $(LIB_DIROBJ)\*.pdb $(DIRDIST)\lib /y >nul 2<&1
+ @-copy ..\include\curl\*.h $(DIRDIST)\include\curl\ /y >nul 2<&1
+
+$(LIB_OBJS): $(LIB_DIROBJ) $(DIRDIST)
+
+$(DIRDIST):
+ @if not exist "$(DIRDIST)\bin" mkdir $(DIRDIST)\bin
+ @if not exist "$(DIRDIST)\include" mkdir $(DIRDIST)\include
+ @if not exist "$(DIRDIST)\include\curl" mkdir $(DIRDIST)\include\curl
+ @if not exist "$(DIRDIST)\lib" mkdir $(DIRDIST)\lib
+
+$(LIB_DIROBJ):
+ @if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)
+ @if not exist "$(LIB_DIROBJ)\vauth" mkdir $(LIB_DIROBJ)\vauth
+ @if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls
+ @if not exist "$(LIB_DIROBJ)\vssh" mkdir $(LIB_DIROBJ)\vssh
+ @if not exist "$(LIB_DIROBJ)\vquic" mkdir $(LIB_DIROBJ)\vquic
+ @if not exist "$(LIB_DIROBJ)\curlx" mkdir $(LIB_DIROBJ)\curlx
+
+$(CURL_DIROBJ):
+ @if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)
+# we need a lib dir for the portability functions from libcurl
+# we use the .c directly here
+ @if not exist "$(CURL_DIROBJ)\lib" mkdir $(CURL_DIROBJ)\lib
+# SEC: Add creation of toolx
+ @if not exist "$(CURL_DIROBJ)\toolx" mkdir $(CURL_DIROBJ)\toolx
+
+.SUFFIXES: .c .obj .res
+
+{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\\" $<
+
+{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vauth\\" $<
+
+{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vtls\\" $<
+
+{$(LIBCURL_SRC_DIR)\vssh\}.c{$(LIB_DIROBJ)\vssh\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vssh\\" $<
+
+{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vquic\\" $<
+
+{$(LIBCURL_SRC_DIR)\curlx\}.c{$(LIB_DIROBJ)\curlx\}.obj::
+ $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\curlx\\" $<
+
+$(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc
+ $(RC) $(RC_FLAGS)
+
+#
+# curl.exe
+#
+
+
+!IF "$(MODE)"=="static"
+!IF "$(DEBUG)"=="yes"
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC_DEBUG)
+!ELSE
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)
+!ENDIF
+!ELSEIF "$(MODE)"=="dll"
+!IF "$(DEBUG)"=="yes"
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP_DEBUG)
+!ELSE
+CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)
+!ENDIF
+!ENDIF
+
+CURL_FROM_LIBCURL=\
+ $(CURL_DIROBJ)\nonblock.obj \
+ $(CURL_DIROBJ)\strparse.obj \
+ $(CURL_DIROBJ)\strcase.obj \
+ $(CURL_DIROBJ)\timeval.obj \
+ $(CURL_DIROBJ)\wait.obj \
+ $(CURL_DIROBJ)\warnless.obj \
+ $(CURL_DIROBJ)\multibyte.obj \
+ $(CURL_DIROBJ)\version_win32.obj \
+ $(CURL_DIROBJ)\dynbuf.obj \
+ $(CURL_DIROBJ)\base64.obj \
+ $(CURL_DIROBJ)\basename.obj \
+ $(CURL_DIROBJ)\fopen.obj \
+ $(CURL_DIROBJ)\strcopy.obj \
+ $(CURL_DIROBJ)\strdup.obj \
+ $(CURL_DIROBJ)\strerr.obj \
+ $(CURL_DIROBJ)\winapi.obj
+
+!IFDEF USE_MANUAL
+CURL_FROM_LIBCURL = $(CURL_FROM_LIBCURL) $(CURL_DIROBJ)\tool_hugehelp.obj
+!ENDIF
+
+$(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
+ $(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
+ $(MANIFESTTOOL)
+
+{$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj::
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$(CURL_DIROBJ)\\" $<
+
+#SEC: Add rule for toolx folder...
+{$(CURL_SRC_DIR)\toolx\}.c{$(CURL_DIROBJ)\toolx\}.obj::
+ $(CURL_CC) $(CURL_CFLAGS) /I../src /Fo"$(CURL_DIROBJ)\\toolx\\" $<
+
+!IFDEF USE_MANUAL
+$(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c
+ $(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c
+!ENDIF
+$(CURL_DIROBJ)\nonblock.obj: ../lib/curlx/nonblock.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/nonblock.c
+$(CURL_DIROBJ)\strparse.obj: ../lib/curlx/strparse.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/strparse.c
+$(CURL_DIROBJ)\strcase.obj: ../lib/strcase.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strcase.c
+$(CURL_DIROBJ)\timeval.obj: ../lib/curlx/timeval.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/timeval.c
+$(CURL_DIROBJ)\multibyte.obj: ../lib/curlx/multibyte.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/multibyte.c
+$(CURL_DIROBJ)\version_win32.obj: ../lib/curlx/version_win32.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/version_win32.c
+$(CURL_DIROBJ)\wait.obj: ../lib/curlx/wait.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/wait.c
+$(CURL_DIROBJ)\warnless.obj: ../lib/curlx/warnless.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/warnless.c
+$(CURL_DIROBJ)\dynbuf.obj: ../lib/curlx/dynbuf.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/dynbuf.c
+$(CURL_DIROBJ)\base64.obj: ../lib/curlx/base64.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/base64.c
+#SEC: Added additional from-libcurl rules...
+$(CURL_DIROBJ)\basename.obj: ../lib/curlx/basename.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/basename.c
+$(CURL_DIROBJ)\fopen.obj: ../lib/curlx/fopen.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/fopen.c
+$(CURL_DIROBJ)\strcopy.obj: ../lib/curlx/strcopy.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/strcopy.c
+$(CURL_DIROBJ)\strdup.obj: ../lib/curlx/strdup.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/strdup.c
+$(CURL_DIROBJ)\strerr.obj: ../lib/curlx/strerr.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/strerr.c
+$(CURL_DIROBJ)\winapi.obj: ../lib/curlx/winapi.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/winapi.c
+$(CURL_DIROBJ)\curl.res: $(CURL_SRC_DIR)\curl.rc
+ $(RC) $(CURL_RC_FLAGS)
+
+!ENDIF # End of case where a config was provided.
+
+# Makefile.vc's clean removes (LIB)CURL_DIROBJ and DIRDIST dirs then calls
+# this clean. Note those are the original directories we control and not the
+# directories possibly modified by this makefile to point to user-specified
+# directories.
+# For example, don't remove DIRDIST here since it may contain user files if it
+# has been changed by WITH_PREFIX to a different output dir (eg C:\usr\local).
+clean:
+ @-erase /s *.dll 2> NUL
+ @-erase /s *.exp 2> NUL
+ @-erase /s *.idb 2> NUL
+ @-erase /s *.lib 2> NUL
+ @-erase /s *.obj 2> NUL
+ @-erase /s *.pch 2> NUL
+ @-erase /s *.pdb 2> NUL
+ @-erase /s *.res 2> NUL
diff --git a/dependencies/curl/winbuild/README.md b/dependencies/curl/winbuild/README.md
new file mode 100644
index 0000000..691e2db
--- /dev/null
+++ b/dependencies/curl/winbuild/README.md
@@ -0,0 +1,207 @@
+<!--
+Copyright (C) Daniel Stenberg, <daniel at haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
+# Deprecation warning
+
+ This winbuild build system is deprecated and is going to be removed in
+ September 2025 in favor of the CMake build system.
+
+ Please see docs/INSTALL-CMAKE.md : "Migrating from winbuild builds"
+
+# Building curl with Visual C++
+
+ This document describes how to compile, build and install curl and libcurl
+ from sources using the Visual C++ build tool. To build with VC++, you have to
+ first install VC++. The minimum required version of VC is 9 (part of Visual
+ Studio 2008). However using a more recent version is strongly recommended.
+
+ VC++ is also part of the Windows Platform SDK. You do not have to install the
+ full Visual Studio or Visual C++ if all you want is to build curl.
+
+ The latest Platform SDK can be downloaded freely from [Windows SDK and
+ emulator
+ archive](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive)
+
+## Prerequisites
+
+ If you wish to support zlib, OpenSSL, c-ares, ssh2, you have to download them
+ separately and copy them to the `deps` directory as shown below:
+
+ somedirectory\
+ |_curl-src
+ | |_winbuild
+ |
+ |_deps
+ |_ lib
+ |_ include
+ |_ bin
+
+ It is also possible to create the `deps` directory in some other random places
+ and tell the `Makefile` its location using the `WITH_DEVEL` option.
+
+## Open a command prompt
+
+Open a Visual Studio Command prompt:
+
+ Using the **'VS [version] [platform] [type] Command Prompt'** menu entry:
+ where [version] is the Visual Studio version, [platform] is e.g. x64 and
+ [type] Native or Cross platform build. This type of command prompt may not
+ exist in all Visual Studio versions. For example, to build a 64-bit curl open
+ the x64 Native Tools prompt.
+
+ See also:
+
+ [How to: Enable a 64-Bit, x64 hosted MSVC toolset on the command line](https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line)
+
+ [Set the Path and Environment Variables for Command-Line Builds](https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line)
+
+ [Developer Command Prompt for Visual Studio](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs)
+
+## Build in the console
+
+ Once you are in the console, go to the winbuild directory in the curl
+ sources:
+
+ cd curl-src\winbuild
+
+ Then you can call `nmake /f Makefile.vc` with the desired options (see
+ below). The builds are in the top src directory, `builds\` directory, in a
+ directory named using the options given to the nmake call.
+
+ nmake /f Makefile.vc mode=<static or dll> <options>
+
+where `<options>` is one or many of:
+
+ - `VC=<num>` - VC version. 6 or later.
+ - `WITH_DEVEL=<path>` - Paths for the development files (SSL, zlib, etc.)
+ Defaults to sibling directory: `../deps`
+ - `WITH_SSL=<dll/static>` - Enable OpenSSL support, DLL or static
+ - `WITH_NGHTTP2=<dll/static>` - Enable HTTP/2 support, DLL or static
+ - `WITH_MBEDTLS=<dll/static>` - Enable mbedTLS support, DLL or static
+ - `WITH_WOLFSSL=<dll/static>` - Enable wolfSSL support, DLL or static
+ - `WITH_CARES=<dll/static>` - Enable c-ares support, DLL or static
+ - `WITH_ZLIB=<dll/static>` - Enable zlib support, DLL or static
+ - `WITH_SSH=<dll/static>` - Enable libssh support, DLL or static
+ - `WITH_SSH2=<dll/static>` - Enable libssh2 support, DLL or static
+ - `WITH_PREFIX=<dir>` - Where to install the build
+ - `ENABLE_SSPI=<yes/no>` - Enable SSPI support, defaults to yes
+ - `ENABLE_IPV6=<yes/no>` - Enable IPv6, defaults to yes
+ - `ENABLE_IDN=<yes or no>` - Enable use of Windows IDN APIs, defaults to yes
+ Requires Windows Vista or later
+ - `ENABLE_SCHANNEL=<yes/no>` - Enable native Windows SSL support, defaults
+ to yes if SSPI and no other SSL library
+ - `ENABLE_OPENSSL_AUTO_LOAD_CONFIG=<yes/no>`
+ - Enable loading OpenSSL configuration
+ automatically, defaults to yes
+ - `ENABLE_UNICODE=<yes/no>` - Enable Unicode support, defaults to no
+ - `GEN_PDB=<yes/no>` - Generate External Program Database
+ (debug symbols for release build)
+ - `DEBUG=<yes/no>` - Debug builds
+ - `MACHINE=<x86/x64/arm64>` - Target architecture (default is x86)
+ - `CARES_PATH=<path>` - Custom path for c-ares
+ - `MBEDTLS_PATH=<path>` - Custom path for mbedTLS
+ - `WOLFSSL_PATH=<path>` - Custom path for wolfSSL
+ - `NGHTTP2_PATH=<path>` - Custom path for nghttp2
+ - `SSH_PATH=<path>` - Custom path for libssh
+ - `SSH2_PATH=<path>` - Custom path for libssh2
+ - `SSL_PATH=<path>` - Custom path for OpenSSL
+ - `ZLIB_PATH=<path>` - Custom path for zlib
+
+## Cleaning a build
+
+ For most build configurations you can remove a bad build by using the same
+ options with the added keyword "clean". For example:
+
+ nmake /f Makefile.vc mode=static clean
+
+ Build errors due to switching Visual Studio platform tools or mistakenly
+ specifying the wrong machine platform for the tools can usually be solved by
+ first cleaning the bad build.
+
+## Static linking of Microsoft's C runtime (CRT):
+
+ If you are using mode=static, nmake creates and links to the static build of
+ libcurl but *not* the static CRT. If you must you can force nmake to link in
+ the static CRT by passing `RTLIBCFG=static`. Typically you shouldn't use that
+ option, and nmake defaults to the DLL CRT. `RTLIBCFG` is rarely used and
+ therefore rarely tested. When passing `RTLIBCFG` for a configuration that was
+ already built but not with that option, or if the option was specified
+ differently, you must destroy the build directory containing the
+ configuration so that nmake can build it from scratch.
+
+ This option is not recommended unless you have enough development experience
+ to know how to match the runtime library for linking (that is, the CRT). If
+ `RTLIBCFG=static` then release builds use `/MT` and debug builds use `/MTd`.
+
+## Building your own application with libcurl (Visual Studio example)
+
+ When you build curl and libcurl, nmake shows the relative path where the
+ output directory is. The output directory is named from the options nmake
+ used when building. You may also see temp directories of the same name but
+ with suffixes -obj-curl and -obj-lib.
+
+ For example let's say you have built curl.exe and libcurl.dll from the Visual
+ Studio 2010 x64 Win64 Command Prompt:
+
+ nmake /f Makefile.vc mode=dll VC=10
+
+ The output directory has a name similar to
+ `..\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel`.
+
+ The output directory contains subdirectories bin, lib and include. Those are
+ the directories to set in your Visual Studio project. You can either copy the
+ output directory to your project or leave it in place. Following the example,
+ let's assume you leave it in place and your curl top source directory is
+ `C:\curl-7.82.0`. You would set these options for configurations using the
+ x64 platform:
+
+~~~
+ - Configuration Properties > Debugging > Environment
+ PATH=C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\bin;%PATH%
+
+ - C/C++ > General > Additional Include Directories
+ C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\include;
+
+ - Linker > General > Additional Library Directories
+ C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\lib;
+
+ - Linker > Input > Additional Dependencies
+ libcurl.lib;
+~~~
+
+ For configurations using the x86 platform (aka Win32 platform) you would
+ need to make a separate x86 build of libcurl.
+
+ If you build libcurl static (`mode=static`) or debug (`DEBUG=yes`) then the
+ library name varies and separate builds may be necessary for separate
+ configurations of your project within the same platform. This is discussed in
+ the next section.
+
+## Building your own application with a static libcurl
+
+ When building an application that uses the static libcurl library on Windows,
+ you must define `CURL_STATICLIB`. Otherwise the linker looks for dynamic
+ import symbols.
+
+ The static library name has an `_a` suffix in the basename and the debug
+ library name has a `_debug` suffix in the basename. For example,
+ `libcurl_a_debug.lib` is a static debug build of libcurl.
+
+ You may need a separate build of libcurl for each VC configuration combination
+ (for example: Debug|Win32, Debug|x64, Release|Win32, Release|x64).
+
+ You must specify any additional dependencies needed by your build of static
+ libcurl (for example:
+ `advapi32.lib;crypt32.lib;normaliz.lib;ws2_32.lib;wldap32.lib`).
+
+## Legacy Windows and SSL
+
+ When you build curl using the build files in this directory the default SSL
+ backend is Schannel (Windows SSPI), the native SSL library that comes with
+ the Windows OS. Schannel in Windows 8 and earlier is not able to connect to
+ servers that no longer support the legacy handshakes and algorithms used by
+ those versions. If you are using curl in one of those earlier versions of
+ Windows you should choose another SSL backend like OpenSSL.
diff --git a/dependencies/curl/winbuild/makedebug.bat b/dependencies/curl/winbuild/makedebug.bat
new file mode 100644
index 0000000..6bfb73e
--- /dev/null
+++ b/dependencies/curl/winbuild/makedebug.bat
@@ -0,0 +1,33 @@
+ at echo off
+rem ***************************************************************************
+rem * _ _ ____ _
+rem * Project ___| | | | _ \| |
+rem * / __| | | | |_) | |
+rem * | (__| |_| | _ <| |___
+rem * \___|\___/|_| \_\_____|
+rem *
+rem * Copyright (C) Daniel Stenberg, <daniel at haxx.se>, et al.
+rem *
+rem * This software is licensed as described in the file COPYING, which
+rem * you should have received as part of this distribution. The terms
+rem * are also available at https://curl.se/docs/copyright.html.
+rem *
+rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+rem * copies of the Software, and permit persons to whom the Software is
+rem * furnished to do so, under the terms of the COPYING file.
+rem *
+rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+rem * KIND, either express or implied.
+rem *
+rem * SPDX-License-Identifier: curl
+rem *
+rem ***************************************************************************
+
+where.exe nmake.exe >nul 2>&1
+
+if %ERRORLEVEL% EQU 1 (
+ echo Error: Cannot find nmake.exe - be sure to run this script from within a Developer Command-Prompt
+) else (
+ nmake.exe /f Makefile.vc MODE=static DEBUG=yes GEN_PDB=yes
+ if %ERRORLEVEL% NEQ 0 echo Error: Build Failed
+)
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list