Skip to content

Commit be753ad

Browse files
committed
winbuild: convert the instruction text to README.md
Closes curl#5861
1 parent 259a815 commit be753ad

File tree

4 files changed

+128
-132
lines changed

4 files changed

+128
-132
lines changed

Makefile.am

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ VC_DIST = projects/README \
167167
projects/wolfssl_options.h \
168168
projects/wolfssl_override.props
169169

170-
WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
170+
WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
171171
winbuild/MakefileBuild.vc winbuild/Makefile.vc
172172

173173
PLAN9_DIST = plan9/include/mkfile \

scripts/copyright.pl

-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
'^projects/Windows/.*.vcxproj.filters$', # generated MSVC file
4545
'^m4/ax_compile_check_sizeof.m4$', # imported, leave be
4646
'^.mailmap', # git control file
47-
'^winbuild/BUILD.WINDOWS.txt$', # instructions
4847
'\/readme',
4948
'^.github/', # github instruction files
5049
'^.dcignore', # deepcode.ai instruction file

winbuild/BUILD.WINDOWS.txt

-130
This file was deleted.

winbuild/README.md

+127
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# Building curl with Visual C++
2+
3+
This document describes how to compile, build and install curl and libcurl
4+
from sources using the Visual C++ build tool. To build with VC++, you will of
5+
course have to first install VC++. The minimum required version of VC is 6
6+
(part of Visual Studio 6). However using a more recent version is strongly
7+
recommended.
8+
9+
VC++ is also part of the Windows Platform SDK. You do not have to install the
10+
full Visual Studio or Visual C++ if all you want is to build curl.
11+
12+
The latest Platform SDK can be downloaded freely from [Windows SDK and
13+
emulator
14+
archive](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive)
15+
16+
## Prerequisites
17+
18+
If you wish to support zlib, openssl, c-ares, ssh2, you will have to download
19+
them separately and copy them to the deps directory as shown below:
20+
21+
somedirectory\
22+
|_curl-src
23+
| |_winbuild
24+
|
25+
|_deps
26+
|_ lib
27+
|_ include
28+
|_ bin
29+
30+
It is also possible to create the deps directory in some other random places
31+
and tell the Makefile its location using the WITH_DEVEL option.
32+
33+
## Building straight from git
34+
35+
When you check out code git and build it, as opposed from a released source
36+
code archive, you need to first run the `buildconf.bat` batch file (present
37+
in the source code root directory) to set things up.
38+
39+
## Open a command prompt
40+
41+
Open a Visual Studio Command prompt:
42+
43+
Using the **'Developer Command Prompt for VS [version]'** menu entry: where
44+
[version} is the Visual Studio version. The developer prompt at default uses
45+
the x86 mode. It is required to call `Vcvarsall.bat` to setup the prompt for
46+
the machine type you want. This type of command prompt may not exist in all
47+
Visual Studio versions.
48+
49+
See also: [Developer Command Prompt for Visual
50+
Studio](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs)
51+
and [How to: Enable a 64-Bit, x64 hosted MSVC toolset on the command
52+
line](https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line)
53+
54+
Using the **'VS [version] [platform] [type] Command Prompt'** menu entry:
55+
where [version] is the Visual Studio version, [platform] is e.g. x64 and
56+
[type] Native of Cross platform build. This type of command prompt may not
57+
exist in all Visual Studio versions.
58+
59+
See also: [Set the Path and Environment Variables for Command-Line Builds](https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx)
60+
61+
## Build in the console
62+
63+
Once you are in the console, go to the winbuild directory in the Curl
64+
sources:
65+
66+
cd curl-src\winbuild
67+
68+
Then you can call `nmake /f Makefile.vc` with the desired options (see
69+
below). The builds will be in the top src directory, `builds\` directory, in
70+
a directory named using the options given to the nmake call.
71+
72+
nmake /f Makefile.vc mode=<static or dll> <options>
73+
74+
where <options> is one or many of:
75+
76+
- `VC=<6,7,8,9,10,11,12,14,15>` - VC version
77+
- `WITH_DEVEL=<path>` - Paths for the development files (SSL, zlib, etc.)
78+
Defaults to sibbling directory deps: ../deps
79+
Libraries can be fetched at https://windows.php.net/downloads/php-sdk/deps/
80+
Uncompress them into the deps folder.
81+
- `WITH_SSL=<dll/static>` - Enable OpenSSL support, DLL or static
82+
- `WITH_NGHTTP2=<dll/static>` - Enable HTTP/2 support, DLL or static
83+
- `WITH_MBEDTLS=<dll/static>` - Enable mbedTLS support, DLL or static
84+
- `WITH_CARES=<dll/static>` - Enable c-ares support, DLL or static
85+
- `WITH_ZLIB=<dll/static>` - Enable zlib support, DLL or static
86+
- `WITH_SSH2=<dll/static>` - Enable libSSH2 support, DLL or static
87+
- `WITH_PREFIX=<dir>` - Where to install the build
88+
- `ENABLE_SSPI=<yes/no>` - Enable SSPI support, defaults to yes
89+
- `ENABLE_IPV6=<yes/no>` - Enable IPv6, defaults to yes
90+
- `ENABLE_IDN=<yes or no>` - Enable use of Windows IDN APIs, defaults to yes
91+
Requires Windows Vista or later
92+
- `ENABLE_SCHANNEL=<yes/no>` - Enable native Windows SSL support, defaults to yes
93+
- `GEN_PDB=<yes/no>` - Generate Program Database (debug symbols for release build)
94+
- `DEBUG=<yes/no>` - Debug builds
95+
- `MACHINE=<x86/x64>` - Target architecture (default is x86)
96+
- `CARES_PATH=<path>` - Custom path for c-ares
97+
- `MBEDTLS_PATH=<path>` - Custom path for mbedTLS
98+
- `NGHTTP2_PATH=<path>` - Custom path for nghttp2
99+
- `SSH2_PATH=<path>` - Custom path for libSSH2
100+
- `SSL_PATH=<path>` - Custom path for OpenSSL
101+
- `ZLIB_PATH=<path>` - Custom path for zlib
102+
103+
## Static linking of Microsoft's C RunTime (CRT):
104+
105+
If you are using mode=static nmake will create and link to the static build
106+
of libcurl but *not* the static CRT. If you must you can force nmake to link
107+
in the static CRT by passing RTLIBCFG=static. Typically you shouldn't use
108+
that option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used
109+
and therefore rarely tested. When passing RTLIBCFG for a configuration that
110+
was already built but not with that option, or if the option was specified
111+
differently, you must destroy the build directory containing the
112+
configuration so that nmake can build it from scratch.
113+
114+
## Building your own application with a static libcurl
115+
116+
When building an application that uses the static libcurl library on Windows,
117+
you must define CURL_STATICLIB. Otherwise the linker will look for dynamic
118+
import symbols.
119+
120+
## Legacy Windows and SSL
121+
122+
When you build curl using the build files in this directory the default SSL
123+
backend will be Schannel (Windows SSPI), the native SSL library that comes
124+
with the Windows OS. Schannel in Windows <= XP is not able to connect to
125+
servers that no longer support the legacy handshakes and algorithms used by
126+
those versions. If you will be using curl in one of those earlier versions of
127+
Windows you should choose another SSL backend like OpenSSL.

0 commit comments

Comments
 (0)