| #*************************************************************************** |
| # _ _ ____ _ |
| # Project ___| | | | _ \| | |
| # / __| | | | |_) | | |
| # | (__| |_| | _ <| |___ |
| # \___|\___/|_| \_\_____| |
| # |
| # Copyright (C) 1999 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. |
| # |
| # This software is licensed as described in the file COPYING, which |
| # you should have received as part of this distribution. The terms |
| # are also available at https://curl.haxx.se/docs/copyright.html. |
| # |
| # You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| # copies of the Software, and permit persons to whom the Software is |
| # furnished to do so, under the terms of the COPYING file. |
| # |
| # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| # KIND, either express or implied. |
| # |
| #*************************************************************************** |
| |
| !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=<static or dll> <options> |
| !MESSAGE where <options> is one or many of: |
| !MESSAGE VC=<6,7,8,9,10,11,12,14,15> - VC versions |
| !MESSAGE WITH_DEVEL=<path> - Paths for the development files (SSL, zlib, etc.) |
| !MESSAGE Defaults to curl's sibling directory deps: ../deps |
| !MESSAGE Libraries can be fetched at https://windows.php.net/downloads/php-sdk/deps/ |
| !MESSAGE Uncompress them into the deps folder. |
| !MESSAGE WITH_PREFIX=<path> - Installation directory path |
| !MESSAGE Defaults to a configuration dependent (SSL, zlib, etc.) |
| !MESSAGE directory inside curl's subdirectory builds: ./builds |
| !MESSAGE Use backslashes as path separator |
| !MESSAGE WITH_SSL=<dll or static> - Enable OpenSSL support, DLL or static |
| !MESSAGE WITH_NGHTTP2=<dll or static> - Enable HTTP/2 support, DLL or static |
| !MESSAGE WITH_CARES=<dll or static> - Enable c-ares support, DLL or static |
| !MESSAGE WITH_ZLIB=<dll or static> - Enable zlib support, DLL or static |
| !MESSAGE WITH_SSH2=<dll or static> - Enable libSSH2 support, DLL or static |
| !MESSAGE WITH_MBEDTLS=<dll or static> - Enable mbedTLS support, DLL or static |
| !MESSAGE ENABLE_IDN=<yes or no> - Enable use of Windows IDN APIs, defaults to yes |
| !MESSAGE Requires Windows Vista or later |
| !MESSAGE ENABLE_IPV6=<yes or no> - Enable IPv6, defaults to yes |
| !MESSAGE ENABLE_SSPI=<yes or no> - Enable SSPI support, defaults to yes |
| !MESSAGE ENABLE_WINSSL=<yes or no> - Enable native Windows SSL support, defaults to yes |
| !MESSAGE ENABLE_OPENSSL_AUTO_LOAD_CONFIG=<yes or no> |
| !MESSAGE - Whether the OpenSSL configuration will be loaded automatically, defaults to yes |
| !MESSAGE GEN_PDB=<yes or no> - Generate Program Database (debug symbols for release build) |
| !MESSAGE DEBUG=<yes or no> - Debug builds |
| !MESSAGE MACHINE=<x86 or x64> - Target architecture (default x64 on AMD64, x86 on others) |
| !MESSAGE CARES_PATH=<path to cares> - Custom path for c-ares |
| !MESSAGE MBEDTLS_PATH=<path to mbedTLS> - Custom path for mbedTLS |
| !MESSAGE NGHTTP2_PATH=<path to HTTP/2> - Custom path for nghttp2 |
| !MESSAGE SSH2_PATH=<path to libSSH2> - Custom path for libSSH2 |
| !MESSAGE SSL_PATH=<path to OpenSSL> - Custom path for OpenSSL |
| !MESSAGE ZLIB_PATH=<path to zlib> - Custom path for zlib |
| !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 |
| |
| !IFNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG |
| ENABLE_OPENSSL_AUTO_LOAD_CONFIG = true |
| !ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="yes" |
| !UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG |
| ENABLE_OPENSSL_AUTO_LOAD_CONFIG = true |
| !ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="no" |
| !UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG |
| ENABLE_OPENSSL_AUTO_LOAD_CONFIG = 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 "$(ENABLE_NGHTTP2)"=="yes" |
| # compatibility bit, WITH_NGHTTP2 is the correct flag |
| WITH_NGHTTP2 = dll |
| USE_NGHTTP2 = true |
| NGHTTP2 = dll |
| !ELSEIF "$(WITH_NGHTTP2)"=="dll" |
| USE_NGHTTP2 = true |
| NGHTTP2 = dll |
| !ELSEIF "$(WITH_NGHTTP2)"=="static" |
| USE_NGHTTP2 = true |
| NGHTTP2 = static |
| !ENDIF |
| |
| !IFNDEF USE_NGHTTP2 |
| USE_NGHTTP2 = false |
| !ENDIF |
| |
| !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static" |
| USE_MBEDTLS = true |
| MBEDTLS = $(WITH_MBEDTLS) |
| !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 |
| |
| !IF "$(USE_NGHTTP2)"=="true" |
| CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-nghttp2-$(NGHTTP2) |
| !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): |
| @SET DIROBJ=$(LIBCURL_DIROBJ) |
| @SET MACRO_NAME=LIBCURL_OBJS |
| @SET OUTFILE=LIBCURL_OBJS.inc |
| @CALL gen_resp_file.bat $(LIBCURL_OBJS) |
| |
| @SET DIROBJ=$(CURL_DIROBJ) |
| @SET MACRO_NAME=CURL_OBJS |
| @SET OUTFILE=CURL_OBJS.inc |
| @CALL 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) |
| # compatibility bit |
| @SET WITH_NGHTTP2=$(WITH_NGHTTP2) |
| |
| @$(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 $@ |