321 строка
7.3 KiB
Makefile
321 строка
7.3 KiB
Makefile
#***************************************************************************
|
|
# _ _ ____ _
|
|
# 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)
|
|
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_WEBSOCKETS
|
|
ENABLE_WEBSOCKETS = false
|
|
!ELSEIF "$(ENABLE_WEBSOCKETS)"=="yes"
|
|
!UNDEF ENABLE_WEBSOCKETS
|
|
ENABLE_WEBSOCKETS = true
|
|
!ELSEIF "$(ENABLE_WEBSOCKETS)"=="no"
|
|
!UNDEF ENABLE_WEBSOCKETS
|
|
ENABLE_WEBSOCKETS = 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_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_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):
|
|
@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_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 $@
|