chiark / gitweb /
Change build-depends to list libssl-dev first. Outcome in sid/buster is to switch...
[curl.git] / winbuild / Makefile.vc
1 !IF "$(MODE)"=="static"
2 TARGET = $(LIB_NAME_STATIC)
3 AS_DLL = false
4 CFGSET=true
5 !ELSEIF "$(MODE)"=="dll"
6 TARGET = $(LIB_NAME_DLL)
7 AS_DLL = true
8 CFGSET=true
9 !ELSE
10 !MESSAGE Invalid mode: $(MODE)
11
12 #######################
13 # Usage
14 #
15
16 !MESSAGE Usage: nmake /f Makefile.vc mode=<static or dll> <options>
17 !MESSAGE where <options> is one or many of:
18 !MESSAGE   VC=<6,7,8,9,10,11,12,14>     - VC versions
19 !MESSAGE   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)
20 !MESSAGE                                  Defaults to sibbling directory deps: ../deps
21 !MESSAGE                                  Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/
22 !MESSAGE                                  Uncompress them into the deps folder.
23 !MESSAGE   WITH_SSL=<dll or static>     - Enable OpenSSL support, DLL or static
24 !MESSAGE   WITH_NGHTTP2=<dll or static> - Enable HTTP/2 support, DLL or static
25 !MESSAGE   WITH_CARES=<dll or static>   - Enable c-ares support, DLL or static
26 !MESSAGE   WITH_ZLIB=<dll or static>    - Enable zlib support, DLL or static
27 !MESSAGE   WITH_SSH2=<dll or static>    - Enable libSSH2 support, DLL or static
28 !MESSAGE   WITH_MBEDTLS=<dll or static> - Enable mbedTLS support, DLL or static
29 !MESSAGE   ENABLE_IDN=<yes or no>       - Enable use of Windows IDN APIs, defaults to yes
30 !MESSAGE                                  Requires Windows Vista or later, or installation from:
31 !MESSAGE                                  https://www.microsoft.com/en-us/download/details.aspx?id=734
32 !MESSAGE   ENABLE_IPV6=<yes or no>      - Enable IPv6, defaults to yes
33 !MESSAGE   ENABLE_SSPI=<yes or no>      - Enable SSPI support, defaults to yes
34 !MESSAGE   ENABLE_WINSSL=<yes or no>    - Enable native Windows SSL support, defaults to yes
35 !MESSAGE   GEN_PDB=<yes or no>          - Generate Program Database (debug symbols for release build)
36 !MESSAGE   DEBUG=<yes or no>            - Debug builds
37 !MESSAGE   MACHINE=<x86 or x64>         - Target architecture (default x64 on AMD64, x86 on others)
38 !ERROR please choose a valid mode
39
40 !ENDIF
41
42 !INCLUDE "../lib/Makefile.inc"
43 LIBCURL_OBJS=$(CSOURCES:.c=.obj)
44
45 !INCLUDE "../src/Makefile.inc"
46
47 # tool_hugehelp has a special rule
48 CURL_OBJS=$(CURL_CFILES:tool_hugehelp.c=)
49
50 CURL_OBJS=$(CURL_OBJS:.c=.obj)
51
52
53 # backwards compatible check for USE_SSPI
54 !IFDEF USE_SSPI
55 ENABLE_SSPI = $(USE_SSPI)
56 !ENDIF
57
58 # default options
59
60 !IFNDEF MACHINE
61 # Note: nmake magically changes the value of PROCESSOR_ARCHITECTURE from "AMD64"
62 # to "x86" when building in a 32 bit build environment on a 64 bit machine.
63 !IF "$(PROCESSOR_ARCHITECTURE)"=="AMD64"
64 MACHINE = x64
65 !ELSE
66 MACHINE = x86
67 !ENDIF
68 !ENDIF
69
70 !IFNDEF ENABLE_IDN
71 USE_IDN = true
72 !ELSEIF "$(ENABLE_IDN)"=="yes"
73 USE_IDN = true
74 !ELSEIF "$(ENABLE_IDN)"=="no"
75 USE_IDN = false
76 !ENDIF
77
78 !IFNDEF ENABLE_IPV6
79 USE_IPV6 = true
80 !ELSEIF "$(ENABLE_IPV6)"=="yes"
81 USE_IPV6 = true
82 !ELSEIF "$(ENABLE_IPV6)"=="no"
83 USE_IPV6 = false
84 !ENDIF
85
86 !IFNDEF ENABLE_SSPI
87 USE_SSPI = true
88 !ELSEIF "$(ENABLE_SSPI)"=="yes"
89 USE_SSPI = true
90 !ELSEIF "$(ENABLE_SSPI)"=="no"
91 USE_SSPI = false
92 !ENDIF
93
94 !IFNDEF ENABLE_WINSSL
95 !IF DEFINED(WITH_SSL) || DEFINED(WITH_MBEDTLS)
96 USE_WINSSL = false
97 !ELSE
98 USE_WINSSL = $(USE_SSPI)
99 !ENDIF
100 !ELSEIF "$(ENABLE_WINSSL)"=="yes"
101 USE_WINSSL = true
102 !ELSEIF "$(ENABLE_WINSSL)"=="no"
103 USE_WINSSL = false
104 !ENDIF
105
106 CONFIG_NAME_LIB = libcurl
107
108 !IF "$(WITH_SSL)"=="dll"
109 USE_SSL = true
110 SSL     = dll
111 !ELSEIF "$(WITH_SSL)"=="static"
112 USE_SSL = true
113 SSL     = static
114 !ENDIF
115
116 !IF "$(ENABLE_NGHTTP2)"=="yes"
117 # compatibility bit, WITH_NGHTTP2 is the correct flag
118 WITH_NGHTTP2 = dll
119 USE_NGHTTP2  = true
120 NGHTTP2      = dll
121 !ELSEIF "$(WITH_NGHTTP2)"=="dll"
122 USE_NGHTTP2 = true
123 NGHTTP2     = dll
124 !ELSEIF "$(WITH_NGHTTP2)"=="static"
125 USE_NGHTTP2 = true
126 NGHTTP2     = static
127 !ENDIF
128
129 !IFNDEF USE_NGHTTP2
130 USE_NGHTTP2 = false
131 !ENDIF
132
133 !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"
134 USE_MBEDTLS = true
135 MBEDTLS     = $(WITH_MBEDTLS)
136 !ENDIF
137
138 !IF ( "$(USE_SSL)"=="true" && "$(USE_WINSSL)"=="true" ) \
139  || ( "$(USE_SSL)"=="true" && "$(USE_MBEDTLS)"=="true" ) \
140  || ( "$(USE_MBEDTLS)"=="true" && "$(USE_WINSSL)"=="true" )
141 !ERROR SSL, MBEDTLS and WINSSL are mutual exclusive options.
142 !ENDIF
143
144 !IF "$(WITH_CARES)"=="dll"
145 USE_CARES = true
146 CARES     = dll
147 !ELSEIF "$(WITH_CARES)"=="static"
148 USE_CARES = true
149 CARES     = static
150 !ENDIF
151
152 !IF "$(WITH_ZLIB)"=="dll"
153 USE_ZLIB = true
154 ZLIB     = dll
155 !ELSEIF "$(WITH_ZLIB)"=="static"
156 USE_ZLIB = true
157 ZLIB     = static
158 !ENDIF
159
160 !IF "$(WITH_SSH2)"=="dll"
161 USE_SSH2 = true
162 SSH2     = dll
163 !ELSEIF "$(WITH_SSH2)"=="static"
164 USE_SSH2 = true
165 SSH2     = static
166 !ENDIF
167
168 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-vc$(VC)-$(MACHINE)
169
170 !IF "$(DEBUG)"=="yes"
171 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-debug
172 !ELSE
173 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-release
174 !ENDIF
175
176 !IF "$(AS_DLL)"=="true"
177 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-dll
178 !ELSE
179 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-static
180 !ENDIF
181
182 !IF "$(USE_SSL)"=="true"
183 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssl-$(SSL)
184 !ENDIF
185
186 !IF "$(USE_MBEDTLS)"=="true"
187 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-mbedtls-$(MBEDTLS)
188 !ENDIF
189
190 !IF "$(USE_CARES)"=="true"
191 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-cares-$(CARES)
192 !ENDIF
193
194 !IF "$(USE_ZLIB)"=="true"
195 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB)
196 !ENDIF
197
198 !IF "$(USE_SSH2)"=="true"
199 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh2-$(SSH2)
200 !ENDIF
201
202 !IF "$(USE_IPV6)"=="true"
203 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ipv6
204 !ENDIF
205
206 !IF "$(USE_SSPI)"=="true"
207 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi
208 !ENDIF
209
210 !IF "$(USE_WINSSL)"=="true"
211 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-winssl
212 !ENDIF
213
214 !IF "$(USE_NGHTTP2)"=="true"
215 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-nghttp2-$(NGHTTP2)
216 !ENDIF
217
218 !MESSAGE configuration name: $(CONFIG_NAME_LIB)
219
220 BUILD_DIR=../builds/$(CONFIG_NAME_LIB)
221 LIBCURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib
222 CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl
223 DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\
224
225 $(MODE):
226         @SET DIROBJ=$(LIBCURL_DIROBJ)
227         @SET MACRO_NAME=LIBCURL_OBJS
228         @SET OUTFILE=LIBCURL_OBJS.inc
229         @gen_resp_file.bat $(LIBCURL_OBJS)
230
231         @SET DIROBJ=$(CURL_DIROBJ)
232         @SET MACRO_NAME=CURL_OBJS
233         @SET OUTFILE=CURL_OBJS.inc
234         @gen_resp_file.bat $(CURL_OBJS)
235
236         @SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB)
237         @SET MACHINE=$(MACHINE)
238         @SET USE_NGHTTP2=$(USE_NGHTTP2)
239         @SET USE_IDN=$(USE_IDN)
240         @SET USE_IPV6=$(USE_IPV6)
241         @SET USE_SSPI=$(USE_SSPI)
242         @SET USE_WINSSL=$(USE_WINSSL)
243 # compatibility bit
244         @SET WITH_NGHTTP2=$(WITH_NGHTTP2)
245
246         @$(MAKE) /NOLOGO /F MakefileBuild.vc
247
248 copy_from_lib:
249         echo copying .c...
250         FOR %%i IN ($(CURLX_CFILES:/=\)) DO copy %%i ..\src\