quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

MakefileBuild.vc (21533B)


      1 #***************************************************************************
      2 #                                  _   _ ____  _
      3 #  Project                     ___| | | |  _ \| |
      4 #                             / __| | | | |_) | |
      5 #                            | (__| |_| |  _ <| |___
      6 #                             \___|\___/|_| \_\_____|
      7 #
      8 # Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
      9 #
     10 # This software is licensed as described in the file COPYING, which
     11 # you should have received as part of this distribution. The terms
     12 # are also available at https://curl.se/docs/copyright.html.
     13 #
     14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
     15 # copies of the Software, and permit persons to whom the Software is
     16 # furnished to do so, under the terms of the COPYING file.
     17 #
     18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
     19 # KIND, either express or implied.
     20 #
     21 # SPDX-License-Identifier: curl
     22 #
     23 #***************************************************************************
     24 
     25 ###########################################################################
     26 #
     27 # Makefile for building libcurl with MSVC
     28 #
     29 # Usage: see README.md
     30 #
     31 ##############################################################
     32 
     33 CFGSET=FALSE
     34 WINBUILD_DIR=`cd`
     35 
     36 # Utilities.
     37 # If a path is required that contains characters such as space, quote the path.
     38 MT         = mt.exe
     39 RC         = rc.exe
     40 ZIP        = zip.exe
     41 
     42 # Allow changing C compiler via environment variable CC (default cl.exe)
     43 # This command macro is not set by default: https://msdn.microsoft.com/en-us/library/ms933742.aspx
     44 !If "$(CC)" == ""
     45 CC = cl.exe
     46 !Endif
     47 
     48 !IF "$(VC)"=="6"
     49 CC_NODEBUG  = $(CC) /O2 /DNDEBUG
     50 CC_DEBUG    = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
     51 CFLAGS      = /I. /I../lib /I../include /nologo /W4 /GX /YX /FD /c /DBUILDING_LIBCURL
     52 !ELSE
     53 CC_NODEBUG  = $(CC) /O2 /DNDEBUG
     54 CC_DEBUG    = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd
     55 CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /EHsc /FD /c /DBUILDING_LIBCURL
     56 !ENDIF
     57 
     58 LFLAGS     = /nologo /machine:$(MACHINE)
     59 LNKDLL     = link.exe /DLL
     60 # Use lib.exe instead of link.exe as link.exe /lib has the following bad habits:
     61 # - optimizing options like /opt:ref raises warnings (at least in Visual Studio 2015)
     62 # - all (including Windows) dependencies are aggregated (as static parts)
     63 # - link.exe /lib is not documented (anymore) at MSDN
     64 # Instead of id: just create an archive, that contains all objects
     65 LNKLIB     = lib.exe
     66 
     67 CFLAGS_PDB = /Zi
     68 LFLAGS_PDB = /incremental:no /opt:ref,icf /DEBUG
     69 
     70 CFLAGS_LIBCURL_STATIC  = /DCURL_STATICLIB
     71 
     72 WIN_LIBS    = ws2_32.lib wldap32.lib advapi32.lib crypt32.lib secur32.lib
     73 
     74 BASE_NAME              = libcurl
     75 BASE_NAME_DEBUG        = $(BASE_NAME)_debug
     76 BASE_NAME_STATIC       = $(BASE_NAME)_a
     77 BASE_NAME_STATIC_DEBUG = $(BASE_NAME_STATIC)_debug
     78 
     79 LIB_NAME_STATIC        = $(BASE_NAME_STATIC).lib
     80 LIB_NAME_STATIC_DEBUG  = $(BASE_NAME_STATIC_DEBUG).lib
     81 LIB_NAME_DLL           = $(BASE_NAME).dll
     82 LIB_NAME_IMP           = $(BASE_NAME).lib
     83 LIB_NAME_DLL_DEBUG     = $(BASE_NAME_DEBUG).dll
     84 LIB_NAME_IMP_DEBUG     = $(BASE_NAME_DEBUG).lib
     85 
     86 PDB_NAME_STATIC        = $(BASE_NAME_STATIC).pdb
     87 PDB_NAME_STATIC_DEBUG  = $(BASE_NAME_STATIC_DEBUG).pdb
     88 PDB_NAME_DLL           = $(BASE_NAME).pdb
     89 PDB_NAME_DLL_DEBUG     = $(BASE_NAME_DEBUG).pdb
     90 
     91 # CURL Command section
     92 PROGRAM_NAME  = curl.exe
     93 CURL_CFLAGS   = /I../lib /I../lib/curlx /I../include /nologo /W4 /EHsc /FD /c
     94 CURL_LFLAGS   = /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console $(LFLAGS)
     95 CURL_RESFLAGS = /i../include
     96 
     97 #############################################################
     98 ## Nothing more to do below this line!
     99 LIBCURL_SRC_DIR = ..\lib
    100 CURL_SRC_DIR = ..\src
    101 
    102 !IF EXISTS($(CURL_SRC_DIR)\tool_hugehelp.c)
    103 USE_MANUAL   = true
    104 CFLAGS       = $(CFLAGS) /DUSE_MANUAL
    105 !ENDIF
    106 
    107 !IFNDEF WITH_DEVEL
    108 WITH_DEVEL   = ../../deps
    109 !ENDIF
    110 DEVEL_INCLUDE= $(WITH_DEVEL)/include
    111 DEVEL_LIB    = $(WITH_DEVEL)/lib
    112 
    113 !IF EXISTS("$(DEVEL_INCLUDE)")
    114 CFLAGS       = $(CFLAGS) /I"$(DEVEL_INCLUDE)"
    115 !ENDIF
    116 !IF EXISTS("$(DEVEL_LIB)")
    117 LFLAGS       = $(LFLAGS) "/LIBPATH:$(DEVEL_LIB)"
    118 !ENDIF
    119 
    120 !IFDEF SSL_PATH
    121 SSL_INC_DIR  = $(SSL_PATH)\include
    122 SSL_LIB_DIR  = $(SSL_PATH)\lib
    123 SSL_LFLAGS   = $(SSL_LFLAGS) "/LIBPATH:$(SSL_LIB_DIR)"
    124 !ELSE
    125 SSL_INC_DIR=$(DEVEL_INCLUDE)\openssl
    126 SSL_LIB_DIR=$(DEVEL_LIB)
    127 !ENDIF
    128 
    129 !IF "$(WITH_SSL)"=="dll" || "$(WITH_SSL)"=="static"
    130 !IF EXISTS("$(SSL_LIB_DIR)\libssl.lib")
    131 SSL_LIBS     = libssl.lib libcrypto.lib
    132 !ELSE
    133 SSL_LIBS     = libeay32.lib ssleay32.lib
    134 !ENDIF
    135 USE_SSL      = true
    136 SSL          = $(WITH_SSL)
    137 !IF "$(WITH_SSL)"=="static"
    138 WIN_LIBS     = $(WIN_LIBS) gdi32.lib user32.lib crypt32.lib
    139 !ENDIF
    140 !ENDIF
    141 
    142 !IFDEF USE_SSL
    143 SSL_CFLAGS   = /DUSE_OPENSSL /I"$(SSL_INC_DIR)"
    144 !IF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="false"
    145 SSL_CFLAGS   = $(SSL_CFLAGS) /DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG
    146 !ENDIF
    147 !ENDIF
    148 
    149 !IF "$(DISABLE_WEBSOCKETS)"=="true"
    150 CFLAGS  = $(CFLAGS) /DCURL_DISABLE_WEBSOCKETS=1
    151 !ENDIF
    152 
    153 !IFDEF NGHTTP2_PATH
    154 NGHTTP2_INC_DIR  = $(NGHTTP2_PATH)\include
    155 NGHTTP2_LIB_DIR  = $(NGHTTP2_PATH)\lib
    156 NGHTTP2_LFLAGS   = $(NGHTTP2_LFLAGS) "/LIBPATH:$(NGHTTP2_LIB_DIR)"
    157 !ELSE
    158 NGHTTP2_INC_DIR  = $(DEVEL_INCLUDE)
    159 NGHTTP2_LIB_DIR  = $(DEVEL_LIB)
    160 !ENDIF
    161 
    162 !IF "$(WITH_NGHTTP2)"=="dll"
    163 NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /I"$(NGHTTP2_INC_DIR)"
    164 NGHTTP2_LIBS     = nghttp2.lib
    165 !ELSEIF "$(WITH_NGHTTP2)"=="static"
    166 NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /DNGHTTP2_STATICLIB /I"$(NGHTTP2_INC_DIR)"
    167 !IF EXISTS("$(NGHTTP2_LIB_DIR)\nghttp2_static.lib")
    168 NGHTTP2_LIBS     = nghttp2_static.lib
    169 !ELSE
    170 NGHTTP2_LIBS     = nghttp2.lib
    171 !ENDIF
    172 !ENDIF
    173 
    174 !IFDEF MSH3_PATH
    175 MSH3_INC_DIR     = $(MSH3_PATH)\include
    176 MSH3_LIB_DIR     = $(MSH3_PATH)\lib
    177 MSH3_LFLAGS      = $(MSH3_LFLAGS) "/LIBPATH:$(MSH3_LIB_DIR)"
    178 !ELSE
    179 MSH3_INC_DIR     = $(DEVEL_INCLUDE)
    180 MSH3_LIB_DIR     = $(DEVEL_LIB)
    181 !ENDIF
    182 
    183 !IF "$(WITH_MSH3)"=="dll"
    184 MSH3_CFLAGS      = /DUSE_MSH3 /I"$(MSH3_INC_DIR)"
    185 MSH3_LIBS        = msh3.lib
    186 !ELSEIF "$(WITH_MSH3)"=="static"
    187 MSH3_CFLAGS      = /DUSE_MSH3 /DMSH3_STATICLIB /I"$(MSH3_INC_DIR)"
    188 !IF EXISTS("$(NGHTTP2_LIB_DIR)\msh3_static.lib")
    189 MSH3_LIBS        = msh3_static.lib
    190 !ELSE
    191 MSH3_LIBS        = msh3.lib
    192 !ENDIF
    193 !ENDIF
    194 
    195 !IFDEF MBEDTLS_PATH
    196 MBEDTLS_INC_DIR  = $(MBEDTLS_PATH)\include
    197 MBEDTLS_LIB_DIR  = $(MBEDTLS_PATH)\lib
    198 MBEDTLS_LFLAGS   = $(MBEDTLS_LFLAGS) "/LIBPATH:$(MBEDTLS_LIB_DIR)"
    199 !ELSE
    200 MBEDTLS_INC_DIR  = $(DEVEL_INCLUDE)
    201 MBEDTLS_LIB_DIR  = $(DEVEL_LIB)
    202 !ENDIF
    203 
    204 !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"
    205 USE_MBEDTLS    = true
    206 MBEDTLS        = $(WITH_MBEDTLS)
    207 MBEDTLS_CFLAGS = /DUSE_MBEDTLS /I"$(MBEDTLS_INC_DIR)"
    208 MBEDTLS_LIBS   = mbedtls.lib mbedcrypto.lib mbedx509.lib
    209 !ENDIF
    210 
    211 !IFDEF WOLFSSL_PATH
    212 WOLFSSL_INC_DIR  = $(WOLFSSL_PATH)\include
    213 WOLFSSL_LIB_DIR  = $(WOLFSSL_PATH)\lib
    214 WOLFSSL_LFLAGS   = $(WOLFSSL_LFLAGS) "/LIBPATH:$(WOLFSSL_LIB_DIR)"
    215 !ELSE
    216 WOLFSSL_INC_DIR  = $(DEVEL_INCLUDE)
    217 WOLFSSL_LIB_DIR  = $(DEVEL_LIB)
    218 !ENDIF
    219 
    220 !IF "$(WITH_WOLFSSL)"=="dll" || "$(WITH_WOLFSSL)"=="static"
    221 USE_WOLFSSL    = true
    222 WOLFSSL        = $(WITH_WOLFSSL)
    223 WOLFSSL_CFLAGS = /DUSE_WOLFSSL /I"$(WOLFSSL_INC_DIR)"
    224 WOLFSSL_LIBS   = wolfssl.lib
    225 !ENDIF
    226 
    227 
    228 !IFDEF CARES_PATH
    229 CARES_INC_DIR  = $(CARES_PATH)\include
    230 CARES_LIB_DIR  = $(CARES_PATH)\lib
    231 CARES_LFLAGS   = $(CARES_LFLAGS) "/LIBPATH:$(CARES_LIB_DIR)"
    232 !ELSE
    233 CARES_INC_DIR  = $(DEVEL_INCLUDE)/cares
    234 CARES_LIB_DIR  = $(DEVEL_LIB)
    235 !ENDIF
    236 
    237 !IF "$(WITH_CARES)"=="dll"
    238 !IF "$(DEBUG)"=="yes"
    239 CARES_LIBS     = caresd.lib
    240 !ELSE
    241 CARES_LIBS     = cares.lib
    242 !ENDIF
    243 USE_CARES      = true
    244 CARES          = dll
    245 !ELSEIF "$(WITH_CARES)"=="static"
    246 !IF "$(DEBUG)"=="yes"
    247 CARES_LIBS     = libcaresd.lib
    248 !ELSE
    249 CARES_LIBS     = libcares.lib
    250 !ENDIF
    251 USE_CARES      = true
    252 CARES          = static
    253 !ENDIF
    254 
    255 !IFDEF USE_CARES
    256 CARES_CFLAGS   = /DUSE_ARES /I"$(CARES_INC_DIR)"
    257 !IF "$(CARES)"=="static"
    258 CARES_CFLAGS   = $(CARES_CFLAGS) /DCARES_STATICLIB
    259 !ENDIF
    260 !ENDIF
    261 
    262 
    263 !IFDEF ZLIB_PATH
    264 ZLIB_INC_DIR = $(ZLIB_PATH)\include
    265 ZLIB_LIB_DIR = $(ZLIB_PATH)\lib
    266 ZLIB_LFLAGS  = $(ZLIB_LFLAGS) "/LIBPATH:$(ZLIB_LIB_DIR)"
    267 !ELSE
    268 ZLIB_INC_DIR = $(DEVEL_INCLUDE)
    269 ZLIB_LIB_DIR = $(DEVEL_LIB)
    270 !ENDIF
    271 
    272 # Depending on how zlib is built the libraries have different names, we
    273 # try to handle them all.
    274 !IF "$(WITH_ZLIB)"=="dll"
    275 !IF EXISTS("$(ZLIB_LIB_DIR)\zlibwapi.lib")
    276 ZLIB_LIBS = zlibwapi.lib
    277 ADDITIONAL_ZLIB_CFLAGS = /DZLIB_WINAPI
    278 !ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zdll.lib")
    279 ZLIB_LIBS   = zdll.lib
    280 !ELSE
    281 ZLIB_LIBS   = zlib.lib
    282 !ENDIF
    283 USE_ZLIB    = true
    284 ZLIB        = dll
    285 !ELSEIF "$(WITH_ZLIB)"=="static"
    286 !IF EXISTS("$(ZLIB_LIB_DIR)\zlibstat.lib")
    287 ZLIB_LIBS   = zlibstat.lib
    288 ADDITIONAL_ZLIB_CFLAGS = /DZLIB_WINAPI
    289 !ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zlibstatic.lib")
    290 ZLIB_LIBS   = zlibstatic.lib
    291 !ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zlib.lib")
    292 ZLIB_LIBS   = zlib.lib
    293 !ELSE
    294 ZLIB_LIBS   = zlib_a.lib
    295 !ENDIF
    296 USE_ZLIB    = true
    297 ZLIB        = static
    298 !ENDIF
    299 
    300 !IFDEF USE_ZLIB
    301 ZLIB_CFLAGS = /DHAVE_LIBZ $(ADDITIONAL_ZLIB_CFLAGS) /I"$(ZLIB_INC_DIR)"
    302 !ENDIF
    303 
    304 
    305 !IFDEF SSH2_PATH
    306 SSH2_INC_DIR= $(SSH2_PATH)\include
    307 SSH2_LIB_DIR= $(SSH2_PATH)\lib
    308 SSH2_LFLAGS = $(SSH2_LFLAGS) "/LIBPATH:$(SSH2_LIB_DIR)"
    309 !ELSE
    310 SSH2_LIB_DIR= $(DEVEL_LIB)
    311 SSH2_INC_DIR= $(DEVEL_INCLUDE)/libssh2
    312 !ENDIF
    313 
    314 !IF "$(WITH_SSH2)"=="dll"
    315 SSH2_LIBS   = libssh2.lib
    316 USE_SSH2    = true
    317 SSH2        = dll
    318 !ELSEIF "$(WITH_SSH2)"=="static"
    319 # libssh2 NMakefile on Windows at default creates a static library without _a suffix
    320 !IF EXISTS("$(SSH2_LIB_DIR)\libssh2.lib")
    321 SSH2_LIBS   = libssh2.lib
    322 !ELSE
    323 SSH2_LIBS   = libssh2_a.lib
    324 !ENDIF
    325 WIN_LIBS     = $(WIN_LIBS) user32.lib
    326 USE_SSH2    = true
    327 SSH2        = static
    328 !ENDIF
    329 
    330 !IFDEF USE_SSH2
    331 SSH2_CFLAGS = /DUSE_LIBSSH2
    332 SSH2_CFLAGS = $(SSH2_CFLAGS) /I"$(SSH2_INC_DIR)"
    333 !ENDIF
    334 
    335 
    336 !IFDEF SSH_PATH
    337 SSH_INC_DIR= $(SSH_PATH)\include
    338 SSH_LIB_DIR= $(SSH_PATH)\lib
    339 SSH_LFLAGS = $(SSH_LFLAGS) "/LIBPATH:$(SSH_LIB_DIR)"
    340 !ELSE
    341 SSH_LIB_DIR= $(DEVEL_LIB)
    342 SSH_INC_DIR= $(DEVEL_INCLUDE)
    343 !ENDIF
    344 
    345 !IF "$(WITH_SSH)"=="dll" || "$(WITH_SSH)"=="static"
    346 SSH_LIBS   = ssh.lib
    347 USE_SSH    = true
    348 SSH        = $(WITH_SSH)
    349 !ENDIF
    350 
    351 !IFDEF USE_SSH
    352 SSH_CFLAGS = /DUSE_LIBSSH
    353 SSH_CFLAGS = $(SSH_CFLAGS) /I"$(SSH_INC_DIR)"
    354 !ENDIF
    355 
    356 
    357 !IFNDEF USE_IDN
    358 USE_IDN   = true
    359 !ELSEIF "$(USE_IDN)"=="yes"
    360 USE_IDN   = true
    361 !ENDIF
    362 
    363 !IF "$(USE_IDN)"=="true"
    364 IDN_CFLAGS = $(IDN_CFLAGS) /DUSE_WIN32_IDN
    365 WIN_LIBS   = $(WIN_LIBS) Normaliz.lib
    366 !ENDIF
    367 
    368 
    369 !IFNDEF USE_IPV6
    370 USE_IPV6  = true
    371 !ELSEIF "$(USE_IPV6)"=="yes"
    372 USE_IPV6  = true
    373 !ENDIF
    374 
    375 !IF "$(USE_IPV6)"=="true"
    376 IPV6_CFLAGS = $(IPV6_CFLAGS) /DUSE_IPV6
    377 !ENDIF
    378 
    379 
    380 !IFNDEF USE_SSPI
    381 USE_SSPI  = true
    382 !ELSEIF "$(USE_SSPI)"=="yes"
    383 USE_SSPI  = true
    384 !ENDIF
    385 
    386 !IF "$(USE_SSPI)"=="true"
    387 SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_WINDOWS_SSPI
    388 !ENDIF
    389 
    390 
    391 !IFNDEF USE_SCHANNEL
    392 !IF "$(USE_SSL)"=="true"
    393 USE_SCHANNEL  = false
    394 !ELSE
    395 USE_SCHANNEL  = $(USE_SSPI)
    396 !ENDIF
    397 !ELSEIF "$(USE_SCHANNEL)"=="yes"
    398 USE_SCHANNEL  = true
    399 !ENDIF
    400 
    401 
    402 !IF "$(USE_SCHANNEL)"=="true"
    403 !IF "$(USE_SSPI)"!="true"
    404 !ERROR cannot build with Schannel without SSPI
    405 !ENDIF
    406 SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_SCHANNEL
    407 WIN_LIBS    = $(WIN_LIBS) Crypt32.lib
    408 !ENDIF
    409 
    410 
    411 !IF "$(GEN_PDB)"=="yes"
    412 GEN_PDB = true
    413 !ENDIF
    414 
    415 
    416 !IFDEF EMBED_MANIFEST
    417 MANIFESTTOOL = $(MT) -manifest $(DIRDIST)\bin\$(PROGRAM_NAME).manifest -outputresource:$(DIRDIST)\bin\$(PROGRAM_NAME);1
    418 !ENDIF
    419 
    420 # Runtime library configuration
    421 !IF "$(RTLIBCFG)"=="static"
    422 RTLIB = /MT
    423 RTLIB_DEBUG = /MTd
    424 !ELSE
    425 RTLIB = /MD
    426 RTLIB_DEBUG  = /MDd
    427 !ENDIF
    428 
    429 !IF "$(MODE)"=="static"
    430 TARGET = $(LIB_NAME_STATIC)
    431 CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)
    432 AS_DLL = false
    433 CFGSET = true
    434 !ELSEIF "$(MODE)"=="dll"
    435 TARGET = $(LIB_NAME_DLL)
    436 CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)
    437 AS_DLL = true
    438 CFGSET = true
    439 !ENDIF
    440 
    441 !IF "$(CFGSET)" == "FALSE"
    442 !ERROR please choose a valid mode
    443 !ENDIF
    444 
    445 
    446 
    447 # CURL_XX macros are for the curl.exe command
    448 
    449 !IF "$(DEBUG)"=="yes"
    450 RC_FLAGS = /d_DEBUG /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
    451 CURL_CC       = $(CC_DEBUG) $(RTLIB_DEBUG)
    452 CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /d_DEBUG /Fo $@ $(CURL_SRC_DIR)\curl.rc
    453 !ELSE
    454 RC_FLAGS = /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
    455 CURL_CC       = $(CC_NODEBUG) $(RTLIB)
    456 CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /Fo $@ $(CURL_SRC_DIR)\curl.rc
    457 !ENDIF
    458 
    459 !IF "$(AS_DLL)" == "true"
    460 
    461 LNK       = $(LNKDLL) $(LFLAGS) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)
    462 !IF "$(DEBUG)"=="yes"
    463 TARGET    = $(LIB_NAME_DLL_DEBUG)
    464 LNK       = $(LNK) /DEBUG /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)
    465 PDB       = $(PDB_NAME_DLL_DEBUG)
    466 CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)
    467 !ELSE
    468 TARGET    = $(LIB_NAME_DLL)
    469 LNK       = $(LNK)  /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)
    470 PDB       = $(PDB_NAME_DLL)
    471 CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)
    472 !ENDIF
    473 RESOURCE  = $(LIB_DIROBJ)\libcurl.res
    474 
    475 # AS_DLL
    476 !ELSE
    477 
    478 !IF "$(DEBUG)"=="yes"
    479 TARGET   = $(LIB_NAME_STATIC_DEBUG)
    480 PDB      = $(PDB_NAME_STATIC_DEBUG)
    481 !ELSE
    482 TARGET   = $(LIB_NAME_STATIC)
    483 PDB      = $(PDB_NAME_STATIC)
    484 !ENDIF
    485 LNK      = $(LNKLIB) /out:$(LIB_DIROBJ)\$(TARGET)
    486 CURL_CC  = $(CURL_CC) $(CFLAGS_LIBCURL_STATIC)
    487 
    488 # AS_DLL
    489 !ENDIF
    490 
    491 !IF "$(USE_SSL)"=="true"
    492 CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
    493 LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(SSL_LIBS)
    494 !ENDIF
    495 
    496 !IF "$(USE_MBEDTLS)"=="true"
    497 CFLAGS = $(CFLAGS) $(MBEDTLS_CFLAGS)
    498 LFLAGS = $(LFLAGS) $(MBEDTLS_LFLAGS) $(MBEDTLS_LIBS)
    499 !ENDIF
    500 
    501 !IF "$(USE_WOLFSSL)"=="true"
    502 CFLAGS = $(CFLAGS) $(WOLFSSL_CFLAGS)
    503 LFLAGS = $(LFLAGS) $(WOLFSSL_LFLAGS) $(WOLFSSL_LIBS)
    504 !ENDIF
    505 
    506 !IF "$(USE_CARES)"=="true"
    507 CFLAGS = $(CFLAGS) $(CARES_CFLAGS)
    508 LFLAGS = $(LFLAGS) $(CARES_LFLAGS) $(CARES_LIBS)
    509 !ENDIF
    510 
    511 !IF "$(USE_ZLIB)"=="true"
    512 CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
    513 LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) $(ZLIB_LIBS)
    514 !ENDIF
    515 
    516 !IF "$(USE_SSH2)"=="true"
    517 CFLAGS = $(CFLAGS) $(SSH2_CFLAGS)
    518 LFLAGS = $(LFLAGS) $(SSH2_LFLAGS) $(SSH2_LIBS)
    519 !ENDIF
    520 
    521 !IF "$(USE_SSH)"=="true"
    522 CFLAGS = $(CFLAGS) $(SSH_CFLAGS)
    523 LFLAGS = $(LFLAGS) $(SSH_LFLAGS) $(SSH_LIBS)
    524 !ENDIF
    525 
    526 !IF "$(USE_IDN)"=="true"
    527 CFLAGS = $(CFLAGS) $(IDN_CFLAGS)
    528 !ENDIF
    529 
    530 !IF "$(USE_IPV6)"=="true"
    531 CFLAGS = $(CFLAGS) $(IPV6_CFLAGS)
    532 !ENDIF
    533 
    534 !IF "$(USE_SSPI)"=="true"
    535 CFLAGS = $(CFLAGS) $(SSPI_CFLAGS)
    536 !ENDIF
    537 
    538 !IF "$(USE_NGHTTP2)"=="true"
    539 CFLAGS = $(CFLAGS) $(NGHTTP2_CFLAGS)
    540 LFLAGS = $(LFLAGS) $(NGHTTP2_LFLAGS) $(NGHTTP2_LIBS)
    541 !ENDIF
    542 
    543 !IF "$(USE_MSH3)"=="true"
    544 CFLAGS = $(CFLAGS) $(MSH3_CFLAGS)
    545 LFLAGS = $(LFLAGS) $(MSH3_LFLAGS) $(MSH3_LIBS)
    546 !ENDIF
    547 
    548 !IF "$(GEN_PDB)"=="true"
    549 CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)"
    550 LFLAGS = $(LFLAGS) $(LFLAGS_PDB)
    551 !ENDIF
    552 
    553 !IF ( "$(USE_SSL)"=="true" && "$(USE_SCHANNEL)"=="true" ) \
    554  || ( "$(USE_SSL)"=="true" && "$(USE_MBEDTLS)"=="true" ) \
    555  || ( "$(USE_SSL)"=="true" && "$(USE_WOLFSSL)"=="true" ) \
    556  || ( "$(USE_MBEDTLS)"=="true" && "$(USE_WOLFSSL)"=="true" ) \
    557  || ( "$(USE_MBEDTLS)"=="true" && "$(USE_SCHANNEL)"=="true" ) \
    558  || ( "$(USE_WOLFSSL)"=="true" && "$(USE_SCHANNEL)"=="true" )
    559 CFLAGS = $(CFLAGS) /DCURL_WITH_MULTI_SSL
    560 !ENDIF
    561 
    562 !IF "$(USE_UNICODE)"=="true"
    563 CFLAGS = $(CFLAGS) /DUNICODE /D_UNICODE
    564 !ENDIF
    565 
    566 LIB_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib
    567 CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl
    568 
    569 !IFDEF WITH_PREFIX
    570 DIRDIST = $(WITH_PREFIX)
    571 !ELSE
    572 DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\
    573 !ENDIF
    574 
    575 #
    576 # curl.exe
    577 #
    578 CURL_LINK = link.exe /incremental:no /libpath:"$(DIRDIST)\lib"
    579 
    580 !IF "$(CFGSET)" != "FALSE"
    581 # A mode was provided, so the library can be built.
    582 #
    583 !include CURL_OBJS.inc
    584 !include LIBCURL_OBJS.inc
    585 
    586 !IF "$(AS_DLL)" == "true"
    587 LIB_OBJS = $(LIBCURL_OBJS) $(RESOURCE)
    588 !ELSE
    589 LIB_OBJS = $(LIBCURL_OBJS)
    590 !ENDIF
    591 
    592 EXE_OBJS = $(CURL_OBJS) $(CURL_DIROBJ)\curl.res
    593 
    594 all : $(TARGET) $(PROGRAM_NAME)
    595 
    596 package: $(TARGET)
    597 	@cd $(DIRDIST)
    598 	@-$(ZIP) -9 -q -r ..\$(CONFIG_NAME_LIB).zip .>nul 2<&1
    599 	@cd $(MAKEDIR)
    600 
    601 $(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DIRDIST)
    602 	@echo Using SSL: $(USE_SSL)
    603 	@echo Using NGHTTP2: $(USE_NGHTTP2)
    604 	@echo Using MSH3: $(USE_MSH3)
    605 	@echo Using c-ares: $(USE_CARES)
    606 	@echo Using SSH2: $(USE_SSH2)
    607 	@echo Using SSH: $(USE_SSH)
    608 	@echo Using ZLIB: $(USE_ZLIB)
    609 	@echo Using IDN:  $(USE_IDN)
    610 	@echo Using IPv6: $(USE_IPV6)
    611 	@echo Using SSPI: $(USE_SSPI)
    612 	@echo Using Schannel: $(USE_SCHANNEL)
    613 	@echo CFLAGS:     $(CFLAGS)
    614 	@echo LFLAGS:     $(LFLAGS)
    615 	@echo GenPDB:     $(GEN_PDB)
    616 	@echo Debug:      $(DEBUG)
    617 	@echo Machine:    $(MACHINE)
    618 	$(LNK) $(LIB_OBJS)
    619 	@echo Copying libs...
    620 	@if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL)       $(DIRDIST)\bin\ /y >nul 2<&1
    621 	@if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC)    $(DIRDIST)\lib\ /y >nul 2<&1
    622 	@if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) $(DIRDIST)\bin\ /y >nul 2<&1
    623 	@if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) $(DIRDIST)\lib\ /y >nul 2<&1
    624 	@if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP)       $(DIRDIST)\lib\ /y >nul 2<&1
    625 	@if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) $(DIRDIST)\lib >nul 2<&1
    626 	@-copy $(LIB_DIROBJ)\*.exp                 $(DIRDIST)\lib /y >nul 2<&1
    627 	@-copy $(LIB_DIROBJ)\*.pdb                 $(DIRDIST)\lib /y >nul 2<&1
    628 	@-copy ..\include\curl\*.h   $(DIRDIST)\include\curl\ /y  >nul 2<&1
    629 
    630 $(LIB_OBJS): $(LIB_DIROBJ) $(DIRDIST)
    631 
    632 $(DIRDIST):
    633 	@if not exist "$(DIRDIST)\bin" mkdir $(DIRDIST)\bin
    634 	@if not exist "$(DIRDIST)\include" mkdir $(DIRDIST)\include
    635 	@if not exist "$(DIRDIST)\include\curl" mkdir $(DIRDIST)\include\curl
    636 	@if not exist "$(DIRDIST)\lib" mkdir $(DIRDIST)\lib
    637 
    638 $(LIB_DIROBJ):
    639 	@if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)
    640 	@if not exist "$(LIB_DIROBJ)\vauth" mkdir $(LIB_DIROBJ)\vauth
    641 	@if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls
    642 	@if not exist "$(LIB_DIROBJ)\vssh" mkdir $(LIB_DIROBJ)\vssh
    643 	@if not exist "$(LIB_DIROBJ)\vquic" mkdir $(LIB_DIROBJ)\vquic
    644 	@if not exist "$(LIB_DIROBJ)\curlx" mkdir $(LIB_DIROBJ)\curlx
    645 
    646 $(CURL_DIROBJ):
    647 	@if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)
    648 # we need a lib dir for the portability functions from libcurl
    649 # we use the .c directly here
    650 	@if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)\lib
    651 
    652 .SUFFIXES: .c .obj .res
    653 
    654 {$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj::
    655 	$(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\\"  $<
    656 
    657 {$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj::
    658 	$(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vauth\\"  $<
    659 
    660 {$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj::
    661 	$(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vtls\\"  $<
    662 
    663 {$(LIBCURL_SRC_DIR)\vssh\}.c{$(LIB_DIROBJ)\vssh\}.obj::
    664 	$(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vssh\\"  $<
    665 
    666 {$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj::
    667 	$(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vquic\\"  $<
    668 
    669 {$(LIBCURL_SRC_DIR)\curlx\}.c{$(LIB_DIROBJ)\curlx\}.obj::
    670 	$(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\curlx\\"  $<
    671 
    672 $(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc
    673 	$(RC) $(RC_FLAGS)
    674 
    675 #
    676 # curl.exe
    677 #
    678 
    679 
    680 !IF "$(MODE)"=="static"
    681 !IF "$(DEBUG)"=="yes"
    682 CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC_DEBUG)
    683 !ELSE
    684 CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)
    685 !ENDIF
    686 !ELSEIF "$(MODE)"=="dll"
    687 !IF "$(DEBUG)"=="yes"
    688 CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP_DEBUG)
    689 !ELSE
    690 CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)
    691 !ENDIF
    692 !ENDIF
    693 
    694 CURL_FROM_LIBCURL=\
    695  $(CURL_DIROBJ)\nonblock.obj \
    696  $(CURL_DIROBJ)\strparse.obj \
    697  $(CURL_DIROBJ)\strcase.obj \
    698  $(CURL_DIROBJ)\timeval.obj \
    699  $(CURL_DIROBJ)\wait.obj \
    700  $(CURL_DIROBJ)\warnless.obj \
    701  $(CURL_DIROBJ)\multibyte.obj \
    702  $(CURL_DIROBJ)\version_win32.obj \
    703  $(CURL_DIROBJ)\dynbuf.obj \
    704  $(CURL_DIROBJ)\base64.obj
    705 
    706 !IFDEF USE_MANUAL
    707 CURL_FROM_LIBCURL = $(CURL_FROM_LIBCURL) $(CURL_DIROBJ)\tool_hugehelp.obj
    708 !ENDIF
    709 
    710 $(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
    711 	$(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
    712 	$(MANIFESTTOOL)
    713 
    714 {$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj::
    715 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$(CURL_DIROBJ)\\"  $<
    716 
    717 !IFDEF USE_MANUAL
    718 $(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c
    719 	$(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c
    720 !ENDIF
    721 $(CURL_DIROBJ)\nonblock.obj: ../lib/curlx/nonblock.c
    722 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/nonblock.c
    723 $(CURL_DIROBJ)\strparse.obj: ../lib/curlx/strparse.c
    724 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/strparse.c
    725 $(CURL_DIROBJ)\strcase.obj: ../lib/strcase.c
    726 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strcase.c
    727 $(CURL_DIROBJ)\timeval.obj: ../lib/curlx/timeval.c
    728 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/timeval.c
    729 $(CURL_DIROBJ)\multibyte.obj: ../lib/curlx/multibyte.c
    730 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/multibyte.c
    731 $(CURL_DIROBJ)\version_win32.obj: ../lib/curlx/version_win32.c
    732 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/version_win32.c
    733 $(CURL_DIROBJ)\wait.obj: ../lib/curlx/wait.c
    734 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/wait.c
    735 $(CURL_DIROBJ)\warnless.obj: ../lib/curlx/warnless.c
    736 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/warnless.c
    737 $(CURL_DIROBJ)\dynbuf.obj: ../lib/curlx/dynbuf.c
    738 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/dynbuf.c
    739 $(CURL_DIROBJ)\base64.obj: ../lib/curlx/base64.c
    740 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curlx/base64.c
    741 $(CURL_DIROBJ)\curl.res: $(CURL_SRC_DIR)\curl.rc
    742 	$(RC) $(CURL_RC_FLAGS)
    743 
    744 !ENDIF  # End of case where a config was provided.
    745 
    746 # Makefile.vc's clean removes (LIB)CURL_DIROBJ and DIRDIST dirs then calls
    747 # this clean. Note those are the original directories we control and not the
    748 # directories possibly modified by this makefile to point to user-specified
    749 # directories.
    750 # For example, don't remove DIRDIST here since it may contain user files if it
    751 # has been changed by WITH_PREFIX to a different output dir (eg C:\usr\local).
    752 clean:
    753 	@-erase /s *.dll 2> NUL
    754 	@-erase /s *.exp 2> NUL
    755 	@-erase /s *.idb 2> NUL
    756 	@-erase /s *.lib 2> NUL
    757 	@-erase /s *.obj 2> NUL
    758 	@-erase /s *.pch 2> NUL
    759 	@-erase /s *.pdb 2> NUL
    760 	@-erase /s *.res 2> NUL