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 @IF NOT EXIST ..\include\curl\curlbuild.h ( \ 227 CALL ..\buildconf.bat \ 228 ) 229 @SET DIROBJ=$(LIBCURL_DIROBJ) 230 @SET MACRO_NAME=LIBCURL_OBJS 231 @SET OUTFILE=LIBCURL_OBJS.inc 232 @gen_resp_file.bat $(LIBCURL_OBJS) 233 234 @SET DIROBJ=$(CURL_DIROBJ) 235 @SET MACRO_NAME=CURL_OBJS 236 @SET OUTFILE=CURL_OBJS.inc 237 @gen_resp_file.bat $(CURL_OBJS) 238 239 @SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB) 240 @SET MACHINE=$(MACHINE) 241 @SET USE_NGHTTP2=$(USE_NGHTTP2) 242 @SET USE_IDN=$(USE_IDN) 243 @SET USE_IPV6=$(USE_IPV6) 244 @SET USE_SSPI=$(USE_SSPI) 245 @SET USE_WINSSL=$(USE_WINSSL) 246 # compatibility bit 247 @SET WITH_NGHTTP2=$(WITH_NGHTTP2) 248 249 @$(MAKE) /NOLOGO /F MakefileBuild.vc 250 251 copy_from_lib: 252 echo copying .c... 253 FOR %%i IN ($(CURLX_CFILES:/=\)) DO copy %%i ..\src\ 254