# | (__| |_| | _ <| |___\r
# \___|\___/|_| \_\_____|\r
#\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.\r
#\r
# This software is licensed as described in the file COPYING, which\r
# you should have received as part of this distribution. The terms\r
-# are also available at http://curl.haxx.se/docs/copyright.html.\r
+# are also available at https://curl.haxx.se/docs/copyright.html.\r
#\r
# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
# copies of the Software, and permit persons to whom the Software is\r
\r
###########################################################################\r
#\r
-# Makefile for building libcurl with MSVC 6, 7, 8, 9, 10, 11 and 12\r
+# Makefile for building libcurl with MSVC 6, 7, 8, 9, 10, 11, 12 and 14\r
#\r
# Usage: see usage message below\r
# Should be invoked from winbuild directory\r
WINBUILD_DIR=`cd`\r
ZIP = zip.exe\r
\r
+# Allow changing C compiler via environment variable CC (default cl.exe)\r
+# This command macro is not set by default: https://msdn.microsoft.com/en-us/library/ms933742.aspx\r
+!If "$(CC)" == ""\r
+CC = cl.exe\r
+!Endif\r
+\r
!IF "$(VC)"=="6"\r
-CC_NODEBUG = cl.exe /O2 /DNDEBUG\r
-CC_DEBUG = cl.exe /Od /Gm /Zi /D_DEBUG /GZ\r
+CC_NODEBUG = $(CC) /O2 /DNDEBUG\r
+CC_DEBUG = $(CC) /Od /Gm /Zi /D_DEBUG /GZ\r
CFLAGS = /I. /I../lib /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL\r
!ELSE\r
-CC_NODEBUG = cl.exe /O2 /DNDEBUG\r
-CC_DEBUG = cl.exe /Od /D_DEBUG /RTC1 /Z7 /LDd /W3\r
+CC_NODEBUG = $(CC) /O2 /DNDEBUG\r
+CC_DEBUG = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd /W3\r
CFLAGS = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL\r
!ENDIF\r
\r
SSL = static\r
!ENDIF\r
\r
+!IFNDEF USE_NGHTTP2\r
+USE_NGHTTP2 = false\r
+!ENDIF\r
+\r
!IFDEF USE_SSL\r
-SSL_CFLAGS = /DUSE_SSLEAY /I"$(DEVEL_INCLUDE)/openssl"\r
+SSL_CFLAGS = /DUSE_OPENSSL /I"$(DEVEL_INCLUDE)/openssl"\r
+\r
+!IF "$(USE_NGHTTP2)"=="yes"\r
+USE_NGHTTP2 = true\r
+!ENDIF\r
+\r
+!IF "$(USE_NGHTTP2)"=="true"\r
+SSL_CFLAGS = $(SSL_CFLAGS) /DUSE_NGHTTP2\r
+SSL_LIBS = $(SSL_LIBS) nghttp2.lib\r
+!ENDIF\r
+\r
+!ENDIF\r
+\r
+!IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"\r
+USE_MBEDTLS = true\r
+MBEDTLS = $(WITH_MBEDTLS)\r
+MBEDTLS_CFLAGS = /DUSE_MBEDTLS\r
+MBEDTLS_LIBS = mbedtls.lib mbedcrypto.lib mbedx509.lib\r
+!ENDIF\r
+\r
+\r
+!IF "$(WITH_CARES)"=="dll"\r
+!IF "$(DEBUG)"=="yes"\r
+CARES_LIBS = caresd.lib\r
+!ELSE\r
+CARES_LIBS = cares.lib\r
+!ENDIF\r
+USE_CARES = true\r
+CARES = dll\r
+!ELSEIF "$(WITH_CARES)"=="static"\r
+!IF "$(DEBUG)"=="yes"\r
+CARES_LIBS = libcaresd.lib\r
+!ELSE\r
+CARES_LIBS = libcares.lib\r
+!ENDIF\r
+USE_CARES = true\r
+CARES = static\r
!ENDIF\r
\r
+!IFDEF USE_CARES\r
+CARES_CFLAGS = /DUSE_ARES /I"$(DEVEL_INCLUDE)/cares"\r
+!ENDIF\r
\r
!IF "$(WITH_ZLIB)"=="dll"\r
ZLIB_LIBS = zlib.lib\r
!ERROR cannot build with WinSSL without SSPI\r
!ENDIF\r
SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_SCHANNEL\r
+WIN_LIBS = $(WIN_LIBS) Crypt32.lib\r
!ENDIF\r
\r
\r
!ENDIF\r
\r
\r
-!IFDEF EMBEND_MANIFEST\r
+!IFDEF EMBED_MANIFEST\r
MANIFESTTOOL = mt -manifest $(DIRDIST)\$(PROGRAM_NAME).manifest -outputresource:$(DIRDIST)\$(PROGRAM_NAME);1\r
!ENDIF\r
\r
\r
!IF "$(DEBUG)"=="yes"\r
RC_FLAGS = /dDEBUGBUILD=1 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc\r
-CC = $(CC_DEBUG) $(RTLIB_DEBUG)\r
-\r
-CURL_CC = $(CC)\r
+CURL_CC = $(CC_DEBUG) $(RTLIB_DEBUG)\r
CURL_RC_FLAGS = /i../include /dDEBUGBUILD=1 /Fo $@ $(CURL_SRC_DIR)\curl.rc\r
!ELSE\r
RC_FLAGS = /dDEBUGBUILD=0 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc\r
-CC = $(CC_NODEBUG) $(RTLIB)\r
-\r
-CURL_CC = $(CC)\r
+CURL_CC = $(CC_NODEBUG) $(RTLIB)\r
CURL_RC_FLAGS = /i../include /dDEBUGBUILD=0 /Fo $@ $(CURL_SRC_DIR)\curl.rc\r
!ENDIF\r
\r
-CURL_CC = $(CURL_CC) $(CURL_CFLAGS)\r
-\r
!IF "$(AS_DLL)" == "true"\r
\r
LNK = $(LNKDLL) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)\r
PDB = $(PDB_NAME_STATIC)\r
!ENDIF\r
LNK = $(LNKLIB) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)\r
-CC = $(CC) $(CFLAGS_LIBCURL_STATIC)\r
+CURL_CC = $(CURL_CC) $(CFLAGS_LIBCURL_STATIC)\r
\r
# AS_DLL\r
!ENDIF\r
LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(SSL_LIBS)\r
!ENDIF\r
\r
+!IF "$(USE_MBEDTLS)"=="true"\r
+CFLAGS = $(CFLAGS) $(MBEDTLS_CFLAGS)\r
+LFLAGS = $(LFLAGS) $(MBEDTLS_LFLAGS) $(MBEDTLS_LIBS)\r
+!ENDIF\r
+\r
+!IF "$(USE_CARES)"=="true"\r
+CFLAGS = $(CFLAGS) $(CARES_CFLAGS)\r
+LFLAGS = $(LFLAGS) $(CARES_LFLAGS) $(CARES_LIBS)\r
+!ENDIF\r
+\r
!IF "$(USE_ZLIB)"=="true"\r
CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)\r
LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) $(ZLIB_LIBS)\r
\r
$(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DISTDIR)\r
@echo Using SSL: $(USE_SSL)\r
+ @echo Using NGHTTP2: $(USE_NGHTTP2)\r
+ @echo Using c-ares: $(USE_CARES)\r
@echo Using SSH2: $(USE_SSH2)\r
@echo Using ZLIB: $(USE_ZLIB)\r
@echo Using IDN: $(USE_IDN)\r
\r
$(LIB_DIROBJ):\r
@if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)\r
+ @if not exist "$(LIB_DIROBJ)\vauth" mkdir $(LIB_DIROBJ)\vauth\r
@if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls\r
\r
$(CURL_DIROBJ):\r
.SUFFIXES: .c .obj .res\r
\r
{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj:\r
- $(CC) $(CFLAGS) /Fo"$@" $<\r
+ $(CURL_CC) $(CFLAGS) /Fo"$@" $<\r
+\r
+{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj:\r
+ $(CURL_CC) $(CFLAGS) /Fo"$@" $<\r
\r
{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj:\r
- $(CC) $(CFLAGS) /Fo"$@" $<\r
+ $(CURL_CC) $(CFLAGS) /Fo"$@" $<\r
\r
$(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc\r
rc $(RC_FLAGS)\r
\r
CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \\r
$(CURL_DIROBJ)\nonblock.obj \\r
- $(CURL_DIROBJ)\rawstr.obj \\r
$(CURL_DIROBJ)\strtoofft.obj \\r
$(CURL_DIROBJ)\warnless.obj\r
\r
$(MANIFESTTOOL)\r
\r
{$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj:\r
- $(CC) $(CURL_CFLAGS) /Fo"$@" $<\r
+ $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" $<\r
\r
$(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c\r
$(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c\r
$(CURL_DIROBJ)\nonblock.obj: ../lib/nonblock.c\r
$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/nonblock.c\r
-$(CURL_DIROBJ)\rawstr.obj: ../lib/rawstr.c\r
- $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/rawstr.c\r
$(CURL_DIROBJ)\strtoofft.obj: ../lib/strtoofft.c\r
$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
$(CURL_DIROBJ)\warnless.obj: ../lib/warnless.c\r