1e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET########################################################################### 29bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# 3e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET## Makefile for building libcurl.a with MingW (GCC-3.2 or later) 4e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4) 59bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels## 6e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...] 7e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn 89bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels## 99bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels## Hint: you can also set environment vars to control the build, f.e.: 10e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET## set ZLIB_PATH=c:/zlib-1.2.8 119bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels## set ZLIB=1 12e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# 13e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET########################################################################### 149bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 159bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# Edit the path below to point to the base of your Zlib sources. 169bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifndef ZLIB_PATH 17e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETZLIB_PATH = ../../zlib-1.2.8 189bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 199bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# Edit the path below to point to the base of your OpenSSL package. 209bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifndef OPENSSL_PATH 21e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETOPENSSL_PATH = ../../openssl-1.0.2a 229bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 239bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# Edit the path below to point to the base of your LibSSH2 package. 249bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifndef LIBSSH2_PATH 25e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETLIBSSH2_PATH = ../../libssh2-1.5.0 26e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 27e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# Edit the path below to point to the base of your librtmp package. 28e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifndef LIBRTMP_PATH 29e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETLIBRTMP_PATH = ../../librtmp-2.4 309bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 319bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# Edit the path below to point to the base of your libidn package. 329bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifndef LIBIDN_PATH 33e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETLIBIDN_PATH = ../../libidn-1.30 349bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 35e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# Edit the path below to point to the base of your MS IDN package. 36e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1 37e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# https://www.microsoft.com/en-us/download/details.aspx?id=734 38e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifndef WINIDN_PATH 39e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETWINIDN_PATH = ../../Microsoft IDN Mitigation APIs 409bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 419bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# Edit the path below to point to the base of your Novell LDAP NDK. 429bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifndef LDAP_SDK 439bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas EckelsLDAP_SDK = c:/novell/ndk/cldapsdk/win32 449bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 45e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# Edit the path below to point to the base of your nghttp2 package. 46e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifndef NGHTTP2_PATH 47e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETNGHTTP2_PATH = ../../nghttp2-1.0.0 48e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 49e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 50e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETPROOT = .. 519bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 529bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# Edit the path below to point to the base of your c-ares package. 539bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifndef LIBCARES_PATH 54e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETLIBCARES_PATH = $(PROOT)/ares 559bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 569bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 57e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCC = $(CROSSPREFIX)gcc 58e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall 59e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCFLAGS += -fno-strict-aliasing 609bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# comment LDFLAGS below to keep debug info 61e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETLDFLAGS = -s 62e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETAR = $(CROSSPREFIX)ar 63e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETRANLIB = $(CROSSPREFIX)ranlib 64e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETRC = $(CROSSPREFIX)windres 65e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETRCFLAGS = --include-dir=$(PROOT)/include -DDEBUGBUILD=0 -O COFF 66e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETSTRIP = $(CROSSPREFIX)strip -g 67e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 68e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# Set environment var ARCH to your architecture to override autodetection. 69e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifndef ARCH 70e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64) 71e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETARCH = w64 72e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETelse 73e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETARCH = w32 74e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 75e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 76e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 77e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(ARCH),w64) 78e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCFLAGS += -m64 -D_AMD64_ 79e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETLDFLAGS += -m64 80e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETRCFLAGS += -F pe-x86-64 81e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETelse 82e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCFLAGS += -m32 83e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETLDFLAGS += -m32 84e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETRCFLAGS += -F pe-i386 85e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 86e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 87e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET# Platform-dependent helper tool macros 88e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring /sh,$(SHELL)),/sh) 89e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETDEL = rm -f $1 90e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETRMDIR = rm -fr $1 91e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETMKDIR = mkdir -p $1 92e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCOPY = -cp -afv $1 $2 93e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#COPYR = -cp -afr $1/* $2 94e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCOPYR = -rsync -aC $1/* $2 95e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETTOUCH = touch $1 96e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCAT = cat 97e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETECHONL = echo "" 98e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETDL = ' 99e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETelse 100e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq "$(OS)" "Windows_NT" 101e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETDEL = -del 2>NUL /q /f $(subst /,\,$1) 102e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETRMDIR = -rd 2>NUL /q /s $(subst /,\,$1) 103e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETelse 104e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETDEL = -del 2>NUL $(subst /,\,$1) 105e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETRMDIR = -deltree 2>NUL /y $(subst /,\,$1) 106e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 107e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETMKDIR = -md 2>NUL $(subst /,\,$1) 108e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCOPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2) 109e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCOPYR = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2) 110e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETTOUCH = copy 2>&1>NUL /b $(subst /,\,$1) +,, 111e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCAT = type 112e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETECHONL = $(ComSpec) /c echo. 113e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 1149bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 1159bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels######################################################## 1169bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels## Nothing more to do below this line! 1179bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 118e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -dyn,$(CFG)),-dyn) 119e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETDYN = 1 120e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 121e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -ares,$(CFG)),-ares) 122e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETARES = 1 123e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 124e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -sync,$(CFG)),-sync) 125e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETSYNC = 1 126e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 127e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -rtmp,$(CFG)),-rtmp) 128e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETRTMP = 1 129e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETSSL = 1 130e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETZLIB = 1 131e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 132e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -ssh2,$(CFG)),-ssh2) 133e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETSSH2 = 1 134e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETSSL = 1 135e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETZLIB = 1 136e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 137e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -ssl,$(CFG)),-ssl) 138e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETSSL = 1 139e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 140e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -srp,$(CFG)),-srp) 141e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETSRP = 1 142e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 143e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -zlib,$(CFG)),-zlib) 144e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETZLIB = 1 145e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 146e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -idn,$(CFG)),-idn) 147e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETIDN = 1 148e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 149e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -winidn,$(CFG)),-winidn) 150e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETWINIDN = 1 151e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 152e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -sspi,$(CFG)),-sspi) 153e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETSSPI = 1 154e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 155e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -ldaps,$(CFG)),-ldaps) 156e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETLDAPS = 1 157e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 158e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -ipv6,$(CFG)),-ipv6) 159e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETIPV6 = 1 160e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 161e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -winssl,$(CFG)),-winssl) 162e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETWINSSL = 1 163e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETSSPI = 1 164e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 165e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq ($(findstring -nghttp2,$(CFG)),-nghttp2) 166e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETNGHTTP2 = 1 167e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 168e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 1699bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas EckelsINCLUDES = -I. -I../include 170e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETCFLAGS += -DBUILDING_LIBCURL 171e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 172e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifdef SYNC 173e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DUSE_SYNC_DNS 174e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETelse 175e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifdef ARES 176e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET INCLUDES += -I"$(LIBCARES_PATH)" 177e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DUSE_ARES -DCARES_STATICLIB 178e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET DLL_LIBS += -L"$(LIBCARES_PATH)" -lcares 179e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET libcurl_dll_DEPENDENCIES = $(LIBCARES_PATH)/libcares.a 180e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 1819bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 1829bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef RTMP 1839bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels INCLUDES += -I"$(LIBRTMP_PATH)" 1849bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels CFLAGS += -DUSE_LIBRTMP 1859bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels DLL_LIBS += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm 1869bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 187e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifdef NGHTTP2 188e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET INCLUDES += -I"$(NGHTTP2_PATH)/include" 189e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DUSE_NGHTTP2 190e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET DLL_LIBS += -L"$(NGHTTP2_PATH)/lib" -lnghttp2 191e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 1929bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef SSH2 1939bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels INCLUDES += -I"$(LIBSSH2_PATH)/include" -I"$(LIBSSH2_PATH)/win32" 1949bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H 195e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET DLL_LIBS += -L"$(LIBSSH2_PATH)/win32" -lssh2 1969bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 1979bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef SSL 198e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifndef OPENSSL_INCLUDE 199e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc" 200e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc 201e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 202e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include" 203e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET OPENSSL_INCLUDE = $(OPENSSL_PATH)/include 204e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 205e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 206e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h" 207e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET $(error Invalid path to OpenSSL package: $(OPENSSL_PATH)) 208e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 209e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifndef OPENSSL_LIBPATH 210e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out" 211e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET OPENSSL_LIBPATH = $(OPENSSL_PATH)/out 212e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET OPENSSL_LIBS = -leay32 -lssl32 213e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 214e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib" 215e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib 216e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET OPENSSL_LIBS = -lcrypto -lssl 217e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 218e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 219e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifndef DYN 220e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET OPENSSL_LIBS += -lgdi32 -lcrypt32 221e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 222e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET INCLUDES += -I"$(OPENSSL_INCLUDE)" 223e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DUSE_OPENSSL -DHAVE_OPENSSL_ENGINE_H -DHAVE_OPENSSL_PKCS12_H \ 2249bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES -DOPENSSL_NO_KRB5 \ 2259bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels -DCURL_WANTS_CA_BUNDLE_ENV 226e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET DLL_LIBS += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS) 227e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifdef SRP 228e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifeq "$(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h)" "$(OPENSSL_INCLUDE)/openssl/srp.h" 229e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DHAVE_OPENSSL_SRP -DUSE_TLS_SRP 230e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 231e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 2329bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2339bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef ZLIB 2349bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels INCLUDES += -I"$(ZLIB_PATH)" 2359bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H 236e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET DLL_LIBS += -L"$(ZLIB_PATH)" -lz 2379bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2389bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef IDN 2399bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels INCLUDES += -I"$(LIBIDN_PATH)/include" 2409bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels CFLAGS += -DUSE_LIBIDN 241e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET DLL_LIBS += -L"$(LIBIDN_PATH)/lib" -lidn 242e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETelse 243e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifdef WINIDN 244e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DUSE_WIN32_IDN 245e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DWANT_IDN_PROTOTYPES 246e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET DLL_LIBS += -L"$(WINIDN_PATH)" -lnormaliz 247e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 2489bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2499bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef SSPI 2509bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels CFLAGS += -DUSE_WINDOWS_SSPI 251e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ifdef WINSSL 252e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DUSE_SCHANNEL 253e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET endif 254e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 255e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifdef SPNEGO 256e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DHAVE_SPNEGO 2579bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2589bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef IPV6 259e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501 2609bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2619bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef LDAPS 2629bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels CFLAGS += -DHAVE_LDAP_SSL 2639bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2649bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef USE_LDAP_NOVELL 2659bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels INCLUDES += -I"$(LDAP_SDK)/inc" 2669bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK 2679bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels DLL_LIBS += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx 2689bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2699bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifdef USE_LDAP_OPENLDAP 2709bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels INCLUDES += -I"$(LDAP_SDK)/include" 2719bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK 2729bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels DLL_LIBS += -L"$(LDAP_SDK)/lib" -lldap -llber 2739bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2749bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifndef USE_LDAP_NOVELL 2759bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsifndef USE_LDAP_OPENLDAP 276e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET DLL_LIBS += -lwldap32 2779bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2789bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsendif 2799bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas EckelsDLL_LIBS += -lws2_32 2809bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2819bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# Makefile.inc provides the CSOURCES and HHEADERS defines 2829bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsinclude Makefile.inc 2839bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2849bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelslibcurl_dll_LIBRARY = libcurl.dll 2859bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelslibcurl_dll_a_LIBRARY = libcurldll.a 2869bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelslibcurl_a_LIBRARY = libcurl.a 2879bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2889bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelslibcurl_a_OBJECTS := $(patsubst %.c,%.o,$(strip $(CSOURCES))) 2899bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelslibcurl_a_DEPENDENCIES := $(strip $(CSOURCES) $(HHEADERS)) 2909bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2919bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas EckelsRESOURCE = libcurl.res 2929bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2939bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2949bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsall: $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) 2959bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 2969bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels$(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES) 297e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET @$(call DEL, $@) 2989bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels $(AR) cru $@ $(libcurl_a_OBJECTS) 2999bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels $(RANLIB) $@ 3009bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels $(STRIP) $@ 3019bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3029bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels# remove the last line above to keep debug info 3039bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3049bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels$(libcurl_dll_LIBRARY): $(libcurl_a_OBJECTS) $(RESOURCE) $(libcurl_dll_DEPENDENCIES) 305e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET @$(call DEL, $@) 306e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET $(CC) $(LDFLAGS) -shared -o $@ \ 307e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET -Wl,--output-def,$(@:.dll=.def),--out-implib,$(libcurl_dll_a_LIBRARY) \ 308e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET $(libcurl_a_OBJECTS) $(RESOURCE) $(DLL_LIBS) 3099bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 310e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET%.o: %.c $(PROOT)/include/curl/curlbuild.h 311e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@ 3129bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 313e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET%.res: %.rc 314e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET $(RC) $(RCFLAGS) -i $< -o $@ 3159bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3169bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsclean: 317e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETifeq "$(wildcard $(PROOT)/include/curl/curlbuild.h.dist)" "$(PROOT)/include/curl/curlbuild.h.dist" 318e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET @$(call DEL, $(PROOT)/include/curl/curlbuild.h) 319e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETendif 320e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET @$(call DEL, $(libcurl_a_OBJECTS) $(RESOURCE)) 3219bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3229bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsdistclean vclean: clean 323e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET @$(call DEL, $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY)) 3249bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 325e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET$(PROOT)/include/curl/curlbuild.h: 326e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET @echo Creating $@ 327e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET @$(call COPY, $@.dist, $@) 3289bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels 3299bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels$(LIBCARES_PATH)/libcares.a: 3309bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels $(MAKE) -C $(LIBCARES_PATH) -f Makefile.m32 331