#*************************************************************************** # _ _ ____ _ # Project ___| | | | _ \| | # / __| | | | |_) | | # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # # Copyright (C) Daniel Stenberg, , 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 $@