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