diff options
author | Alessandro Ghedini <ghedo@debian.org> | 2020-12-31 11:43:56 +0100 |
---|---|---|
committer | Alessandro Ghedini <ghedo@debian.org> | 2020-12-31 11:43:56 +0100 |
commit | 50a389ade96c0e69ed0ec9d20d075e6d8641a510 (patch) | |
tree | 1efdc1536fccd8a6fc8830b0866c2826ce744780 /winbuild | |
parent | fea0dcbfd05f0524ea51e68ebe570fd9b531ab95 (diff) |
New upstream version 7.74.0
Diffstat (limited to 'winbuild')
-rw-r--r-- | winbuild/BUILD.WINDOWS.txt | 130 | ||||
-rw-r--r-- | winbuild/Makefile.vc | 37 | ||||
-rw-r--r-- | winbuild/MakefileBuild.vc | 34 | ||||
-rw-r--r-- | winbuild/README.md | 132 | ||||
-rwxr-xr-x | winbuild/gen_resp_file.bat | 4 |
5 files changed, 147 insertions, 190 deletions
diff --git a/winbuild/BUILD.WINDOWS.txt b/winbuild/BUILD.WINDOWS.txt deleted file mode 100644 index 5b63bdcd..00000000 --- a/winbuild/BUILD.WINDOWS.txt +++ /dev/null @@ -1,130 +0,0 @@ -Building with Visual C++, prerequisites
-=======================================
-
- 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 will
- of course have to first install VC++. The minimum required version of
- VC is 6 (part of Visual Studio 6). 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:
-
- https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
-
- If you are building with VC6 then you will also need the February 2003
- Edition of the Platform SDK which can be downloaded from:
-
- https://www.microsoft.com/en-us/download/details.aspx?id=12261
-
- If you wish to support zlib, openssl, c-ares, ssh2, you will 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.
-
-Building straight from git
-==========================
-
- When you check out code git and build it, as opposed from a released source
- code archive, you need to first run the "buildconf.bat" batch file (present
- in the source code root directory) to set things up.
-
-Building with Visual C++
-========================
-
-Open a Visual Studio Command prompt:
-
- Using the 'Developer Command Prompt for VS <version>' menu entry:
- where version is the Visual Studio version. The developer prompt at default
- uses the x86 mode. It is required to call Vcvarsall.bat to setup the prompt
- for the machine type you want, using Vcvarsall.bat.
- This type of command prompt may not exist in all Visual Studio versions.
-
- For more information, check:
- https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs
- https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line
-
- 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 of Cross platform build. This type of command prompt
- may not exist in all Visual Studio versions.
-
- See also:
- https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx
-
-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 will be 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=<6,7,8,9,10,11,12,14,15> - VC versions
- WITH_DEVEL=<path> - Paths for the development files (SSL, zlib, etc.)
- Defaults to sibbling directory deps: ../deps
- Libraries can be fetched at https://windows.php.net/downloads/php-sdk/deps/
- Uncompress them into the deps folder.
- WITH_SSL=<dll or static> - Enable OpenSSL support, DLL or static
- WITH_NGHTTP2=<dll or static> - Enable HTTP/2 support, DLL or static
- WITH_MBEDTLS=<dll or static> - Enable mbedTLS support, DLL or static
- WITH_CARES=<dll or static> - Enable c-ares support, DLL or static
- WITH_ZLIB=<dll or static> - Enable zlib support, DLL or static
- WITH_SSH2=<dll or static> - Enable libSSH2 support, DLL or static
- WITH_PREFIX=<dir> - Where to install the build
- ENABLE_SSPI=<yes or no> - Enable SSPI support, defaults to yes
- ENABLE_IPV6=<yes or 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 or no> - Enable native Windows SSL support, defaults to yes
- GEN_PDB=<yes or no> - Generate Program Database (debug symbols for release build)
- DEBUG=<yes or no> - Debug builds
- MACHINE=<x86 or x64> - Target architecture (default is x86)
- CARES_PATH=<path to cares> - Custom path for c-ares
- MBEDTLS_PATH=<path to mbedTLS> - Custom path for mbedTLS
- NGHTTP2_PATH=<path to HTTP/2> - Custom path for nghttp2
- SSH2_PATH=<path to libSSH2> - Custom path for libSSH2
- SSL_PATH=<path to OpenSSL> - Custom path for OpenSSL
- ZLIB_PATH=<path to zlib> - Custom path for zlib
-
-
-Static linking of Microsoft's C RunTime (CRT):
-==============================================
-If you are using mode=static nmake will create and link 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 will default 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.
-
-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 will look for dynamic
-import symbols.
-
-Legacy Windows and SSL
-======================
-When you build curl using the build files in this directory the default SSL
-backend will be Schannel (Windows SSPI), the native SSL library that comes
-with the Windows OS. Schannel in Windows <= XP is not able to connect to
-servers that no longer support the legacy handshakes and algorithms used by
-those versions. If you will be using curl in one of those earlier versions of
-Windows you should choose another SSL backend like OpenSSL.
diff --git a/winbuild/Makefile.vc b/winbuild/Makefile.vc index 54cbf0c2..09856133 100644 --- a/winbuild/Makefile.vc +++ b/winbuild/Makefile.vc @@ -9,7 +9,7 @@ # # 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.haxx.se/docs/copyright.html. +# 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 @@ -35,40 +35,7 @@ CFGSET=true # Usage # -!MESSAGE Usage: nmake /f Makefile.vc mode=<static or dll> <options> -!MESSAGE where <options> is one or many of: -!MESSAGE VC=<6,7,8,9,10,11,12,14,15> - VC versions -!MESSAGE WITH_DEVEL=<path> - Paths for the development files (SSL, zlib, etc.) -!MESSAGE Defaults to curl's sibling directory deps: ../deps -!MESSAGE Libraries can be fetched at https://windows.php.net/downloads/php-sdk/deps/ -!MESSAGE Uncompress them into the deps folder. -!MESSAGE WITH_PREFIX=<path> - Installation directory path -!MESSAGE Defaults to a configuration dependent (SSL, zlib, etc.) -!MESSAGE directory inside curl's subdirectory builds: ./builds -!MESSAGE Use backslashes as path separator -!MESSAGE WITH_SSL=<dll or static> - Enable OpenSSL support, DLL or static -!MESSAGE WITH_NGHTTP2=<dll or static> - Enable HTTP/2 support, DLL or static -!MESSAGE WITH_CARES=<dll or static> - Enable c-ares support, DLL or static -!MESSAGE WITH_ZLIB=<dll or static> - Enable zlib support, DLL or static -!MESSAGE WITH_SSH2=<dll or static> - Enable libSSH2 support, DLL or static -!MESSAGE WITH_MBEDTLS=<dll or static> - Enable mbedTLS support, DLL or static -!MESSAGE ENABLE_IDN=<yes or no> - Enable use of Windows IDN APIs, defaults to yes -!MESSAGE Requires Windows Vista or later -!MESSAGE ENABLE_IPV6=<yes or no> - Enable IPv6, defaults to yes -!MESSAGE ENABLE_SSPI=<yes or no> - Enable SSPI support, defaults to yes -!MESSAGE ENABLE_SCHANNEL=<yes or no> - Enable native Windows SSL support, defaults to yes -!MESSAGE ENABLE_OPENSSL_AUTO_LOAD_CONFIG=<yes or no> -!MESSAGE - Whether the OpenSSL configuration will be loaded automatically, defaults to yes -!MESSAGE ENABLE_UNICODE=<yes or no> - Enable UNICODE support, defaults to no -!MESSAGE GEN_PDB=<yes or no> - Generate Program Database (debug symbols for release build) -!MESSAGE DEBUG=<yes or no> - Debug builds -!MESSAGE MACHINE=<x86 or x64> - Target architecture (default x64 on AMD64, x86 on others) -!MESSAGE CARES_PATH=<path to cares> - Custom path for c-ares -!MESSAGE MBEDTLS_PATH=<path to mbedTLS> - Custom path for mbedTLS -!MESSAGE NGHTTP2_PATH=<path to HTTP/2> - Custom path for nghttp2 -!MESSAGE SSH2_PATH=<path to libSSH2> - Custom path for libSSH2 -!MESSAGE SSL_PATH=<path to OpenSSL> - Custom path for OpenSSL -!MESSAGE ZLIB_PATH=<path to zlib> - Custom path for zlib +!MESSAGE See winbuild/README.md for usage !ERROR please choose a valid mode !ENDIF diff --git a/winbuild/MakefileBuild.vc b/winbuild/MakefileBuild.vc index eefc091a..4112b8fc 100644 --- a/winbuild/MakefileBuild.vc +++ b/winbuild/MakefileBuild.vc @@ -9,7 +9,7 @@ #
# 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.haxx.se/docs/copyright.html.
+# 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
@@ -22,24 +22,9 @@ ###########################################################################
#
-# Makefile for building libcurl with MSVC 6 through to 15
+# Makefile for building libcurl with MSVC
#
-# Usage: see usage message below
-# Should be invoked from winbuild directory
-# Edit the paths and desired library name
-# SSL path is only required if you intend compiling
-# with SSL.
-#
-# This make file leaves the result either a .lib or .dll file
-# in the \lib directory. It should be called from the \lib
-# directory.
-#
-# An option would have been to allow the source directory to
-# be specified, but I saw no requirement.
-#
-# Another option would have been to leave the .lib and .dll
-# files in the "cfg" directory, but then the make file
-# in \src would need to be changed.
+# Usage: see README.md
#
##############################################################
@@ -72,7 +57,7 @@ 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)
+# - 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
@@ -237,8 +222,8 @@ 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.
+# 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
@@ -620,8 +605,9 @@ CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \ $(CURL_DIROBJ)\warnless.obj \
$(CURL_DIROBJ)\curl_ctype.obj \
$(CURL_DIROBJ)\curl_multibyte.obj \
- $(CURL_DIROBJ)\version_win32.obj
-
+ $(CURL_DIROBJ)\version_win32.obj \
+ $(CURL_DIROBJ)\dynbuf.obj
+
$(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
$(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
$(MANIFESTTOOL)
@@ -643,6 +629,8 @@ $(CURL_DIROBJ)\curl_multibyte.obj: ../lib/curl_multibyte.c $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curl_multibyte.c
$(CURL_DIROBJ)\version_win32.obj: ../lib/version_win32.c
$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/version_win32.c
+$(CURL_DIROBJ)\dynbuf.obj: ../lib/dynbuf.c
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/dynbuf.c
$(CURL_DIROBJ)\curl.res: $(CURL_SRC_DIR)\curl.rc
rc $(CURL_RC_FLAGS)
diff --git a/winbuild/README.md b/winbuild/README.md new file mode 100644 index 00000000..2475c988 --- /dev/null +++ b/winbuild/README.md @@ -0,0 +1,132 @@ +# 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 will of
+ course have to first install VC++. The minimum required version of VC is 6
+ (part of Visual Studio 6). 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 will 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.
+
+## Building straight from git
+
+ When you check out code git and build it, as opposed from a released source
+ code archive, you need to first run the `buildconf.bat` batch file (present
+ in the source code root directory) to set things up.
+
+## Open a command prompt
+
+Open a Visual Studio Command prompt:
+
+ Using the **'Developer Command Prompt for VS [version]'** menu entry: where
+ [version} is the Visual Studio version. The developer prompt at default uses
+ the x86 mode. It is required to call `Vcvarsall.bat` to setup the prompt for
+ the machine type you want. This type of command prompt may not exist in all
+ Visual Studio versions.
+
+ See also: [Developer Command Prompt for Visual
+ Studio](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs)
+ and [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)
+
+ 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 of Cross platform build. This type of command prompt may not
+ exist in all Visual Studio versions.
+
+ See also: [Set the Path and Environment Variables for Command-Line Builds](https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx)
+
+## 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 will be 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=<6,7,8,9,10,11,12,14,15>` - VC version
+ - `WITH_DEVEL=<path>` - Paths for the development files (SSL, zlib, etc.)
+ Defaults to sibbling directory deps: ../deps
+ Libraries can be fetched at https://windows.php.net/downloads/php-sdk/deps/
+ Uncompress them into the deps folder.
+ - `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_CARES=<dll/static>` - Enable c-ares support, DLL or static
+ - `WITH_ZLIB=<dll/static>` - Enable zlib 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 Program Database (debug symbols for release build)
+ - `DEBUG=<yes/no>` - Debug builds
+ - `MACHINE=<x86/x64>` - Target architecture (default is x86)
+ - `CARES_PATH=<path>` - Custom path for c-ares
+ - `MBEDTLS_PATH=<path>` - Custom path for mbedTLS
+ - `NGHTTP2_PATH=<path>` - Custom path for nghttp2
+ - `SSH2_PATH=<path>` - Custom path for libSSH2
+ - `SSL_PATH=<path>` - Custom path for OpenSSL
+ - `ZLIB_PATH=<path>` - Custom path for zlib
+
+## Static linking of Microsoft's C RunTime (CRT):
+
+ If you are using mode=static nmake will create and link 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 will default 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.
+
+## 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 will look for dynamic
+ import symbols.
+
+## Legacy Windows and SSL
+
+ When you build curl using the build files in this directory the default SSL
+ backend will be Schannel (Windows SSPI), the native SSL library that comes
+ with the Windows OS. Schannel in Windows <= XP is not able to connect to
+ servers that no longer support the legacy handshakes and algorithms used by
+ those versions. If you will be using curl in one of those earlier versions of
+ Windows you should choose another SSL backend like OpenSSL.
diff --git a/winbuild/gen_resp_file.bat b/winbuild/gen_resp_file.bat index 79a27acf..e19e14bd 100755 --- a/winbuild/gen_resp_file.bat +++ b/winbuild/gen_resp_file.bat @@ -6,11 +6,11 @@ rem * / __| | | | |_) | | rem * | (__| |_| | _ <| |___ rem * \___|\___/|_| \_\_____| rem * -rem * Copyright (C) 2011 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. +rem * Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@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.haxx.se/docs/copyright.html. +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 |