!IF "$(MODE)"=="static" TARGET = $(LIB_NAME_STATIC) AS_DLL = false CFGSET=true !ELSEIF "$(MODE)"=="dll" TARGET = $(LIB_NAME_DLL) AS_DLL = true CFGSET=true !ELSE !MESSAGE Invalid mode: $(MODE) ####################### # Usage # !MESSAGE Usage: nmake /f Makefile.vc mode= !MESSAGE where is one or many of: !MESSAGE VC=<6,7,8,9,10,11,12,14> - VC versions !MESSAGE WITH_DEVEL= - Paths for the development files (SSL, zlib, etc.) !MESSAGE Defaults to sibbling directory deps: ../deps !MESSAGE Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/ !MESSAGE Uncompress them into the deps folder. !MESSAGE WITH_SSL= - Enable OpenSSL support, DLL or static !MESSAGE ENABLE_NGHTTP2= - Enable HTTP/2 support, defaults to no !MESSAGE Requires OpenSSL !MESSAGE WITH_CARES= - Enable c-ares support, DLL or static !MESSAGE WITH_ZLIB= - Enable zlib support, DLL or static !MESSAGE WITH_SSH2= - Enable libSSH2 support, DLL or static !MESSAGE WITH_MBEDTLS= - Enable mbedTLS support, DLL or static !MESSAGE ENABLE_IDN= - Enable use of Windows IDN APIs, defaults to yes !MESSAGE Requires Windows Vista or later, or installation from: !MESSAGE https://www.microsoft.com/en-us/download/details.aspx?id=734 !MESSAGE ENABLE_IPV6= - Enable IPv6, defaults to yes !MESSAGE ENABLE_SSPI= - Enable SSPI support, defaults to yes !MESSAGE ENABLE_WINSSL= - Enable native Windows SSL support, defaults to yes !MESSAGE GEN_PDB= - Generate Program Database (debug symbols for release build) !MESSAGE DEBUG= - Debug builds !MESSAGE MACHINE= - Target architecture (default x64 on AMD64, x86 on others) !ERROR please choose a valid mode !ENDIF !INCLUDE "../lib/Makefile.inc" LIBCURL_OBJS=$(CSOURCES:.c=.obj) !INCLUDE "../src/Makefile.inc" # tool_hugehelp has a special rule CURL_OBJS=$(CURL_CFILES:tool_hugehelp.c=) CURL_OBJS=$(CURL_OBJS:.c=.obj) # backwards compatible check for USE_SSPI !IFDEF USE_SSPI ENABLE_SSPI = $(USE_SSPI) !ENDIF # default options !IFNDEF MACHINE # Note: nmake magically changes the value of PROCESSOR_ARCHITECTURE from "AMD64" # to "x86" when building in a 32 bit build environment on a 64 bit machine. !IF "$(PROCESSOR_ARCHITECTURE)"=="AMD64" MACHINE = x64 !ELSE MACHINE = x86 !ENDIF !ENDIF !IFNDEF ENABLE_IDN USE_IDN = true !ELSEIF "$(ENABLE_IDN)"=="yes" USE_IDN = true !ELSEIF "$(ENABLE_IDN)"=="no" USE_IDN = false !ENDIF !IFNDEF ENABLE_IPV6 USE_IPV6 = true !ELSEIF "$(ENABLE_IPV6)"=="yes" USE_IPV6 = true !ELSEIF "$(ENABLE_IPV6)"=="no" USE_IPV6 = false !ENDIF !IFNDEF ENABLE_SSPI USE_SSPI = true !ELSEIF "$(ENABLE_SSPI)"=="yes" USE_SSPI = true !ELSEIF "$(ENABLE_SSPI)"=="no" USE_SSPI = false !ENDIF !IFNDEF ENABLE_WINSSL !IF DEFINED(WITH_SSL) || DEFINED(WITH_MBEDTLS) USE_WINSSL = false !ELSE USE_WINSSL = $(USE_SSPI) !ENDIF !ELSEIF "$(ENABLE_WINSSL)"=="yes" USE_WINSSL = true !ELSEIF "$(ENABLE_WINSSL)"=="no" USE_WINSSL = false !ENDIF CONFIG_NAME_LIB = libcurl !IF "$(WITH_SSL)"=="dll" USE_SSL = true SSL = dll !ELSEIF "$(WITH_SSL)"=="static" USE_SSL = true SSL = static !ENDIF !IF "$(USE_SSL)"=="true" !IF "$(ENABLE_NGHTTP2)"=="yes" USE_NGHTTP2 = true !ENDIF !ENDIF !IFNDEF USE_NGHTTP2 USE_NGHTTP2 = false !ENDIF !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static" USE_MBEDTLS = true MBEDTLS = $(WITH_MBEDTLS) !ENDIF !IF ( "$(USE_SSL)"=="true" && "$(USE_WINSSL)"=="true" ) \ || ( "$(USE_SSL)"=="true" && "$(USE_MBEDTLS)"=="true" ) \ || ( "$(USE_MBEDTLS)"=="true" && "$(USE_WINSSL)"=="true" ) !ERROR SSL, MBEDTLS and WINSSL are mutual exclusive options. !ENDIF !IF "$(WITH_CARES)"=="dll" USE_CARES = true CARES = dll !ELSEIF "$(WITH_CARES)"=="static" USE_CARES = true CARES = static !ENDIF !IF "$(WITH_ZLIB)"=="dll" USE_ZLIB = true ZLIB = dll !ELSEIF "$(WITH_ZLIB)"=="static" USE_ZLIB = true ZLIB = static !ENDIF !IF "$(WITH_SSH2)"=="dll" USE_SSH2 = true SSH2 = dll !ELSEIF "$(WITH_SSH2)"=="static" USE_SSH2 = true SSH2 = static !ENDIF CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-vc$(VC)-$(MACHINE) !IF "$(DEBUG)"=="yes" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-debug !ELSE CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-release !ENDIF !IF "$(AS_DLL)"=="true" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-dll !ELSE CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-static !ENDIF !IF "$(USE_SSL)"=="true" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssl-$(SSL) !ENDIF !IF "$(USE_MBEDTLS)"=="true" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-mbedtls-$(MBEDTLS) !ENDIF !IF "$(USE_CARES)"=="true" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-cares-$(CARES) !ENDIF !IF "$(USE_ZLIB)"=="true" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB) !ENDIF !IF "$(USE_SSH2)"=="true" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh2-$(SSH2) !ENDIF !IF "$(USE_IPV6)"=="true" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ipv6 !ENDIF !IF "$(USE_SSPI)"=="true" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi !ENDIF !IF "$(USE_WINSSL)"=="true" CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-winssl !ENDIF !MESSAGE configuration name: $(CONFIG_NAME_LIB) BUILD_DIR=../builds/$(CONFIG_NAME_LIB) LIBCURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\ $(MODE): @IF NOT EXIST ..\include\curl\curlbuild.h ( \ CALL ..\buildconf.bat \ ) @SET DIROBJ=$(LIBCURL_DIROBJ) @SET MACRO_NAME=LIBCURL_OBJS @SET OUTFILE=LIBCURL_OBJS.inc @gen_resp_file.bat $(LIBCURL_OBJS) @SET DIROBJ=$(CURL_DIROBJ) @SET MACRO_NAME=CURL_OBJS @SET OUTFILE=CURL_OBJS.inc @gen_resp_file.bat $(CURL_OBJS) @SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB) @SET MACHINE=$(MACHINE) @SET USE_NGHTTP2=$(USE_NGHTTP2) @SET USE_IDN=$(USE_IDN) @SET USE_IPV6=$(USE_IPV6) @SET USE_SSPI=$(USE_SSPI) @SET USE_WINSSL=$(USE_WINSSL) @$(MAKE) /NOLOGO /F MakefileBuild.vc copy_from_lib: echo copying .c... FOR %%i IN ($(CURLX_CFILES:/=\)) DO copy %%i ..\src\ clean: $(MAKE) /NOLOGO /F MakefileBuild.vc $@