123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- #***************************************************************************
- # _ _ ____ _
- # Project ___| | | | _ \| |
- # / __| | | | |_) | |
- # | (__| |_| | _ <| |___
- # \___|\___/|_| \_\_____|
- #
- # Copyright (C) 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.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.
- #
- # SPDX-License-Identifier: curl
- #
- #***************************************************************************
- !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 See winbuild/README.md for usage
- !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_SCHANNEL
- !IF DEFINED(WITH_SSL) || DEFINED(WITH_MBEDTLS) || DEFINED(WITH_WOLFSSL)
- USE_SCHANNEL = false
- !ELSE
- USE_SCHANNEL = $(USE_SSPI)
- !ENDIF
- !ELSEIF "$(ENABLE_SCHANNEL)"=="yes"
- USE_SCHANNEL = true
- !ELSEIF "$(ENABLE_SCHANNEL)"=="no"
- USE_SCHANNEL = 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
- !IFNDEF ENABLE_UNICODE
- USE_UNICODE = false
- !ELSEIF "$(ENABLE_UNICODE)"=="yes"
- USE_UNICODE = true
- !ELSEIF "$(ENABLE_UNICODE)"=="no"
- USE_UNICODE = 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 "$(ENABLE_MSH3)"=="yes"
- # compatibility bit, WITH_MSH3 is the correct flag
- WITH_MSH3 = dll
- USE_MSH3 = true
- MSH3 = dll
- !ELSEIF "$(WITH_MSH3)"=="dll"
- USE_MSH3 = true
- MSH3 = dll
- !ELSEIF "$(WITH_MSH3)"=="static"
- USE_MSH3 = true
- MSH3 = static
- !ENDIF
- !IFNDEF USE_MSH3
- USE_MSH3 = false
- !ENDIF
- !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"
- USE_MBEDTLS = true
- MBEDTLS = $(WITH_MBEDTLS)
- !ENDIF
- !IF "$(WITH_WOLFSSL)"=="dll" || "$(WITH_WOLFSSL)"=="static"
- USE_WOLFSSL = true
- WOLFSSL = $(WITH_WOLFSSL)
- !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
- !IF "$(WITH_SSH)"=="dll"
- USE_SSH = true
- SSH = dll
- !ELSEIF "$(WITH_SSH)"=="static"
- USE_SSH = true
- SSH = 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_WOLFSSL)"=="true"
- CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-wolfssl-$(WOLFSSL)
- !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_SSH)"=="true"
- CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh-$(SSH)
- !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_SCHANNEL)"=="true"
- CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-schannel
- !ENDIF
- !IF "$(USE_NGHTTP2)"=="true"
- CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-nghttp2-$(NGHTTP2)
- !ENDIF
- !IF "$(USE_MSH3)"=="true"
- CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-msh3
- !ENDIF
- !MESSAGE configuration name: $(CONFIG_NAME_LIB)
- # Note these directories are removed by this makefile's 'clean' so they should
- # not be changed to point to user-specified directories that may contain other
- # data. MakefileBuild.vc uses the same variable names but allows some user
- # changes and therefore does not remove the directories.
- 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):
- @echo LIBCURL_OBJS = \> LIBCURL_OBJS.inc
- @for %%i in ($(LIBCURL_OBJS)) do @echo $(LIBCURL_DIROBJ)/%%i \>> LIBCURL_OBJS.inc
- @echo. >> LIBCURL_OBJS.inc
- @echo CURL_OBJS = \> CURL_OBJS.inc
- @for %%i in ($(CURL_OBJS)) do @echo $(CURL_DIROBJ)/%%i \>> CURL_OBJS.inc
- @echo. >> CURL_OBJS.inc
- @SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB)
- @SET MACHINE=$(MACHINE)
- @SET USE_NGHTTP2=$(USE_NGHTTP2)
- @SET USE_MSH3=$(USE_MSH3)
- @SET USE_IDN=$(USE_IDN)
- @SET USE_IPV6=$(USE_IPV6)
- @SET USE_SSPI=$(USE_SSPI)
- @SET USE_SCHANNEL=$(USE_SCHANNEL)
- @SET USE_UNICODE=$(USE_UNICODE)
- # 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:
- @if exist $(LIBCURL_DIROBJ) rd /s /q $(LIBCURL_DIROBJ)
- @if exist $(CURL_DIROBJ) rd /s /q $(CURL_DIROBJ)
- @if exist $(DIRDIST) rd /s /q $(DIRDIST)
- $(MAKE) /NOLOGO /F MakefileBuild.vc $@
|