1 #############################################################
\r
3 ## Makefile for building curl.exe with MSVC9
\r
4 ## Use: nmake -f makefile.vc9 [release | debug] [CFG=release-ssl]
\r
5 ## (default is release)
\r
6 ## "nmake -f makefile.vc9 CFG=release-ssl" statically links OpenSSL
\r
7 ## into curl.exe producing a standalone SSL-enabled executable.
\r
9 ## Comments to: Troy Engel <tengel@sonic.net>
\r
10 ## Updated by: Craig Davison <cd@securityfocus.com>
\r
11 ## release-ssl added by Miklos Nemeth <mnemeth@kfkisystems.com>
\r
13 #############################################################
\r
15 PROGRAM_NAME = curl.exe
\r
17 !IFNDEF OPENSSL_PATH
\r
18 OPENSSL_PATH = ../../openssl-0.9.8o
\r
22 ZLIB_PATH = ../../zlib-1.2.5
\r
29 # USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication
\r
30 # without an openssl installation and offers the ability to authenticate
\r
31 # using the "current logged in user". Since at least with MSVC9 the sspi.h
\r
32 # header is broken it is either required to install the Windows SDK,
\r
33 # or to fix sspi.h with adding this define at the beginning of sspi.h:
\r
34 # #define FreeCredentialHandle FreeCredentialsHandle
\r
36 # If, for some reason the Windows SDK is installed but not installed
\r
37 # in the default location, you can specify WINDOWS_SDK_PATH.
\r
38 # It can be downloaded from:
\r
39 # http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
\r
44 !IFNDEF WINDOWS_SDK_PATH
\r
45 WINDOWS_SDK_PATH = "C:\Program Files\Microsoft SDK"
\r
49 ########################################################
\r
50 ## Nothing more to do below this line!
\r
51 ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"
\r
52 ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)"
\r
53 ZLIB_LIBS = zlib.lib
\r
54 ZLIB_IMP_LIBS = zdll.lib
\r
56 SSL_CFLAGS = /DUSE_SSLEAY
\r
57 SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32"
\r
58 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"
\r
59 SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib advapi32.lib
\r
61 # Runtime library configuration
\r
65 !IF "$(RTLIBCFG)" == "static"
\r
71 CCR = cl.exe $(RTLIB) /O2 /DNDEBUG
\r
72 LINKR = link.exe /incremental:no /libpath:"../lib"
\r
73 RCR = rc.exe /dDEBUGBUILD=0
\r
76 CCD = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /RTC1
\r
77 LINKD = link.exe /incremental:yes /debug /libpath:"../lib"
\r
78 RCD = rc.exe /dDEBUGBUILD=1
\r
80 CFLAGS = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c
\r
81 LFLAGS = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)
\r
82 RESFLAGS = /i../include
\r
84 # This manifest thing is for VC8, enabled by the maketgz script that
\r
85 # builds the VC8 version of this makefile. Left commented out in the VC9
\r
87 #MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1
\r
90 CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
\r
123 #################################################
\r
124 # If CFG not specified, use static libs
\r
126 CFLAGS = $(CFLAGS) /DCURL_STATICLIB
\r
127 LINKLIBS = libcurl.lib
\r
128 LINKLIBS_DEBUG = libcurld.lib
\r
130 #################################################
\r
131 # release dynamic library
\r
133 !IF "$(CFG)" == "release-dll"
\r
134 LINKLIBS = libcurl_imp.lib
\r
135 LINKLIBS_DEBUG = libcurld_imp.lib
\r
138 #################################################
\r
139 # release static library with zlib
\r
141 !IF "$(CFG)" == "release-zlib"
\r
142 CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
\r
143 LINKLIBS = libcurl.lib $(ZLIB_LIBS)
\r
144 LINKLIBS_DEBUG = libcurld.lib $(ZLIB_LIBS)
\r
145 LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
\r
148 #################################################
\r
149 # release static library with ssl
\r
151 !IF "$(CFG)" == "release-ssl"
\r
152 CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
\r
153 LINKLIBS = libcurl.lib $(SSL_LIBS)
\r
154 LINKLIBS_DEBUG = libcurld.lib $(SSL_LIBS)
\r
155 LFLAGS = $(LFLAGS) $(SSL_LFLAGS)
\r
158 #################################################
\r
159 # release dynamic library with dynamic ssl
\r
161 !IF "$(CFG)" == "release-dll-ssl-dll"
\r
162 CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
\r
163 LINKLIBS = libcurl_imp.lib $(SSL_LIBS)
\r
164 LINKLIBS_DEBUG = libcurld_imp.lib $(SSL_LIBS)
\r
165 LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
\r
168 #################################################
\r
169 # release static library with ssl and zlib
\r
171 !IF "$(CFG)" == "release-ssl-zlib"
\r
172 CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
\r
173 LINKLIBS = libcurl.lib $(SSL_LIBS) $(ZLIB_LIBS)
\r
174 LINKLIBS_DEBUG = libcurld.lib $(SSL_LIBS) $(ZLIB_LIBS)
\r
175 LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)
\r
178 #################################################
\r
179 # release static library with dynamic ssl
\r
181 !IF "$(CFG)" == "release-ssl-dll"
\r
182 CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB
\r
183 LINKLIBS = libcurl.lib $(SSL_LIBS)
\r
184 LINKLIBS_DEBUG = libcurld.lib $(SSL_LIBS)
\r
185 LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)
\r
188 #################################################
\r
189 # release static library with dynamic zlib
\r
191 !IF "$(CFG)" == "release-zlib-dll"
\r
192 CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
\r
193 LINKLIBS = libcurl.lib $(ZLIB_IMP_LIBS)
\r
194 LINKLIBS_DEBUG = libcurld.lib $(ZLIB_IMP_LIBS)
\r
195 LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
\r
198 #################################################
\r
199 # release dynamic library with dynamic zlib
\r
201 !IF "$(CFG)" == "release-dll-zlib-dll"
\r
202 CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
\r
203 LINKLIBS = libcurl_imp.lib $(ZLIB_IMP_LIBS)
\r
204 LINKLIBS_DEBUG = libcurld_imp.lib $(ZLIB_IMP_LIBS)
\r
205 LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)
\r
208 #################################################
\r
209 # release static library with dynamic ssl and dynamic zlib
\r
211 !IF "$(CFG)" == "release-ssl-dll-zlib-dll"
\r
212 CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB
\r
213 LINKLIBS = libcurl.lib $(SSL_LIBS) $(ZLIB_IMP_LIBS)
\r
214 LINKLIBS_DEBUG = libcurld.lib $(SSL_LIBS) $(ZLIB_IMP_LIBS)
\r
215 LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
\r
218 #################################################
\r
219 # release dynamic library with dynamic ssl and dynamic zlib
\r
221 !IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"
\r
222 CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)
\r
223 LINKLIBS = libcurl_imp.lib $(SSL_LIBS) $(ZLIB_IMP_LIBS)
\r
224 LINKLIBS_DEBUG = libcurld_imp.lib $(SSL_LIBS) $(ZLIB_IMP_LIBS)
\r
225 LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)
\r
229 LINKLIBS = $(LINKLIBS) ws2_32.lib wldap32.lib
\r
230 LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) ws2_32.lib wldap32.lib
\r
234 release: $(RELEASE_OBJS)
\r
235 $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)
\r
238 debug: $(DEBUG_OBJS)
\r
239 $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)
\r
243 hugehelpr.obj: hugehelp.c
\r
244 $(CCR) $(CFLAGS) /Zm200 /Fo"$@" hugehelp.c
\r
245 writeoutr.obj: writeout.c
\r
246 $(CCR) $(CFLAGS) /Fo"$@" writeout.c
\r
247 urlglobr.obj: urlglob.c
\r
248 $(CCR) $(CFLAGS) /Fo"$@" urlglob.c
\r
249 getpassr.obj: getpass.c
\r
250 $(CCR) $(CFLAGS) /Fo"$@" getpass.c
\r
251 homedirr.obj: homedir.c
\r
252 $(CCR) $(CFLAGS) /Fo"$@" homedir.c
\r
253 curlutilr.obj: curlutil.c
\r
254 $(CCR) $(CFLAGS) /Fo"$@" curlutil.c
\r
255 os-specificr.obj: os-specific.c
\r
256 $(CCR) $(CFLAGS) /Fo"$@" os-specific.c
\r
257 nonblockr.obj: ../lib/nonblock.c
\r
258 $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
\r
259 rawstrr.obj: ../lib/rawstr.c
\r
260 $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
\r
261 strtoofftr.obj: ../lib/strtoofft.c
\r
262 $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
\r
263 xattrr.obj: xattr.c
\r
264 $(CCR) $(CFLAGS) /Fo"$@" xattr.c
\r
266 $(CCR) $(CFLAGS) /Fo"$@" main.c
\r
267 curlr.res : curl.rc
\r
268 $(RCR) $(RESFLAGS) /Fo"$@" curl.rc
\r
271 hugehelpd.obj: hugehelp.c
\r
272 $(CCD) $(CFLAGS) /Zm200 /Fo"$@" hugehelp.c
\r
273 writeoutd.obj: writeout.c
\r
274 $(CCD) $(CFLAGS) /Fo"$@" writeout.c
\r
275 urlglobd.obj: urlglob.c
\r
276 $(CCD) $(CFLAGS) /Fo"$@" urlglob.c
\r
277 getpassd.obj: getpass.c
\r
278 $(CCD) $(CFLAGS) /Fo"$@" getpass.c
\r
279 homedird.obj: homedir.c
\r
280 $(CCD) $(CFLAGS) /Fo"$@" homedir.c
\r
281 curlutild.obj: curlutil.c
\r
282 $(CCD) $(CFLAGS) /Fo"$@" curlutil.c
\r
283 os-specificd.obj: os-specific.c
\r
284 $(CCD) $(CFLAGS) /Fo"$@" os-specific.c
\r
285 nonblockd.obj: ../lib/nonblock.c
\r
286 $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c
\r
287 rawstrd.obj: ../lib/rawstr.c
\r
288 $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c
\r
289 strtoofftd.obj: ../lib/strtoofft.c
\r
290 $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c
\r
291 xattrd.obj: xattr.c
\r
292 $(CCD) $(CFLAGS) /Fo"$@" xattr.c
\r
294 $(CCD) $(CFLAGS) /Fo"$@" main.c
\r
295 curld.res : curl.rc
\r
296 $(RCD) $(RESFLAGS) /Fo"$@" curl.rc
\r
299 @-erase $(PROGRAM_NAME) 2> NUL
\r
300 @-erase $(RELEASE_OBJS) 2> NUL
\r
301 @-erase $(DEBUG_OBJS) 2> NUL
\r
302 @-erase *.idb 2> NUL
\r
303 @-erase *.pdb 2> NUL
\r
304 @-erase *.pch 2> NUL
\r
305 @-erase *.ilk 2> NUL
\r