1#*************************************************************************** 2# _ _ ____ _ 3# Project ___| | | | _ \| | 4# / __| | | | |_) | | 5# | (__| |_| | _ <| |___ 6# \___|\___/|_| \_\_____| 7# 8# Copyright (C) 1999 - 2011, 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 http://curl.haxx.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#*************************************************************************** 22 23############################################################# 24# 25## Makefile for building curl.exe with MSVC9 26## Use: nmake -f makefile.vc9 [release | debug] [CFG=release-ssl] 27## (default is release) 28## "nmake -f makefile.vc9 CFG=release-ssl" statically links OpenSSL 29## into curl.exe producing a standalone SSL-enabled executable. 30## 31# 32############################################################# 33 34PROGRAM_NAME = curl.exe 35 36# ------------------------------------------- 37# Verify that current subdir is curl's 'src' 38# ------------------------------------------- 39 40!IF ! EXIST(.\main.c) 41! MESSAGE Can not process this makefile from outside of curl's 'src' subdirectory. 42! MESSAGE Change to curl's 'src' subdirectory, and try again. 43! ERROR See previous message. 44!ENDIF 45 46# ------------------------------------------------ 47# Makefile.msvc.names provides libcurl file names 48# ------------------------------------------------ 49 50!INCLUDE ..\Makefile.msvc.names 51 52 53 54!IFNDEF OPENSSL_PATH 55OPENSSL_PATH = ../../openssl-0.9.8r 56!ENDIF 57 58!IFNDEF ZLIB_PATH 59ZLIB_PATH = ../../zlib-1.2.5 60!ENDIF 61 62!IFNDEF MACHINE 63MACHINE = X86 64!ENDIF 65 66# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication 67# without an openssl installation and offers the ability to authenticate 68# using the "current logged in user". Since at least with MSVC9 the sspi.h 69# header is broken it is either required to install the Windows SDK, 70# or to fix sspi.h with adding this define at the beginning of sspi.h: 71# #define FreeCredentialHandle FreeCredentialsHandle 72# 73# If, for some reason the Windows SDK is installed but not installed 74# in the default location, you can specify WINDOWS_SDK_PATH. 75# It can be downloaded from: 76# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ 77 78# WINDOWS_SSPI = 1 79 80!IFDEF WINDOWS_SSPI 81!IFNDEF WINDOWS_SDK_PATH 82WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK" 83!ENDIF 84!ENDIF 85 86######################################################## 87## Nothing more to do below this line! 88ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)" 89ZLIB_LFLAGS = "/LIBPATH:$(ZLIB_PATH)" 90ZLIB_LIBS = zlib.lib 91ZLIB_IMP_LIBS = zdll.lib 92 93SSL_CFLAGS = /DUSE_SSLEAY 94SSL_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32" 95SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll" 96SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib advapi32.lib 97 98# Runtime library configuration 99RTLIB = /MD 100RTLIBD = /MDd 101 102!IF "$(RTLIBCFG)" == "static" 103RTLIB = /MT 104RTLIBD = /MTd 105!ENDIF 106 107## Release 108CCR = cl.exe $(RTLIB) /O2 /DNDEBUG 109LINKR = link.exe /incremental:no /libpath:"../lib" 110RCR = rc.exe /dDEBUGBUILD=0 111 112## Debug 113CCD = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /RTC1 114LINKD = link.exe /incremental:yes /debug /libpath:"../lib" 115RCD = rc.exe /dDEBUGBUILD=1 116 117CFLAGS = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_BIND_TO_CURRENT_VCLIBS_VERSION=1 118LFLAGS = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE) 119RESFLAGS = /i../include 120 121# This manifest thing is for VC8, enabled by the maketgz script that 122# builds the VC8 version of this makefile. Left commented out in the VC9 123# version! 124#MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1 125 126!IFDEF WINDOWS_SSPI 127CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include 128!ENDIF 129 130RELEASE_OBJS= \ 131 curlutilr.obj \ 132 getpassr.obj \ 133 homedirr.obj \ 134 hugehelpr.obj \ 135 mainr.obj \ 136 nonblockr.obj \ 137 os-specificr.obj \ 138 rawstrr.obj \ 139 strtoofftr.obj \ 140 urlglobr.obj \ 141 writeoutr.obj \ 142 xattrr.obj \ 143 curlr.res 144 145DEBUG_OBJS= \ 146 curlutild.obj \ 147 getpassd.obj \ 148 homedird.obj \ 149 hugehelpd.obj \ 150 maind.obj \ 151 nonblockd.obj \ 152 os-specificd.obj \ 153 rawstrd.obj \ 154 strtoofftd.obj \ 155 urlglobd.obj \ 156 writeoutd.obj \ 157 xattrd.obj \ 158 curld.res 159 160################################################# 161# If CFG not specified, use static libs 162 163CFLAGS = $(CFLAGS) /DCURL_STATICLIB 164LINKLIBS = $(LIBCURL_STA_LIB_REL) 165LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) 166 167################################################# 168# release dynamic library 169 170!IF "$(CFG)" == "release-dll" 171LINKLIBS = $(LIBCURL_IMP_LIB_REL) 172LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) 173!ENDIF 174 175################################################# 176# release static library with zlib 177 178!IF "$(CFG)" == "release-zlib" 179CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB 180LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS) 181LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS) 182LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) 183!ENDIF 184 185################################################# 186# release static library with ssl 187 188!IF "$(CFG)" == "release-ssl" 189CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB 190LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) 191LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) 192LFLAGS = $(LFLAGS) $(SSL_LFLAGS) 193!ENDIF 194 195################################################# 196# release dynamic library with dynamic ssl 197 198!IF "$(CFG)" == "release-dll-ssl-dll" 199CFLAGS = $(CFLAGS) $(SSL_CFLAGS) 200LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) 201LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) 202LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) 203!ENDIF 204 205################################################# 206# release static library with ssl and zlib 207 208!IF "$(CFG)" == "release-ssl-zlib" 209CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB 210LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS) 211LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS) 212LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS) 213!ENDIF 214 215################################################# 216# release static library with dynamic ssl 217 218!IF "$(CFG)" == "release-ssl-dll" 219CFLAGS = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB 220LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) 221LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) 222LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) 223!ENDIF 224 225################################################# 226# release static library with dynamic zlib 227 228!IF "$(CFG)" == "release-zlib-dll" 229CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB 230LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS) 231LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS) 232LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) 233!ENDIF 234 235################################################# 236# release dynamic library with dynamic zlib 237 238!IF "$(CFG)" == "release-dll-zlib-dll" 239CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS) 240LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(ZLIB_IMP_LIBS) 241LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(ZLIB_IMP_LIBS) 242LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) 243!ENDIF 244 245################################################# 246# release static library with dynamic ssl and dynamic zlib 247 248!IF "$(CFG)" == "release-ssl-dll-zlib-dll" 249CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB 250LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS) 251LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS) 252LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS) 253!ENDIF 254 255################################################# 256# release dynamic library with dynamic ssl and dynamic zlib 257 258!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll" 259CFLAGS = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) 260LINKLIBS = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS) 261LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS) 262LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS) 263!ENDIF 264 265 266LINKLIBS = $(LINKLIBS) ws2_32.lib wldap32.lib 267LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) ws2_32.lib wldap32.lib 268 269all : release 270 271release: $(RELEASE_OBJS) 272 $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS) 273 $(MANIFESTTOOL) 274 275debug: $(DEBUG_OBJS) 276 $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS) 277 $(MANIFESTTOOL) 278 279## Release 280hugehelpr.obj: hugehelp.c 281 $(CCR) $(CFLAGS) /Zm200 /Fo"$@" hugehelp.c 282writeoutr.obj: writeout.c 283 $(CCR) $(CFLAGS) /Fo"$@" writeout.c 284urlglobr.obj: urlglob.c 285 $(CCR) $(CFLAGS) /Fo"$@" urlglob.c 286getpassr.obj: getpass.c 287 $(CCR) $(CFLAGS) /Fo"$@" getpass.c 288homedirr.obj: homedir.c 289 $(CCR) $(CFLAGS) /Fo"$@" homedir.c 290curlutilr.obj: curlutil.c 291 $(CCR) $(CFLAGS) /Fo"$@" curlutil.c 292os-specificr.obj: os-specific.c 293 $(CCR) $(CFLAGS) /Fo"$@" os-specific.c 294nonblockr.obj: ../lib/nonblock.c 295 $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c 296rawstrr.obj: ../lib/rawstr.c 297 $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c 298strtoofftr.obj: ../lib/strtoofft.c 299 $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c 300xattrr.obj: xattr.c 301 $(CCR) $(CFLAGS) /Fo"$@" xattr.c 302mainr.obj: main.c 303 $(CCR) $(CFLAGS) /Fo"$@" main.c 304curlr.res : curl.rc 305 $(RCR) $(RESFLAGS) /Fo"$@" curl.rc 306 307## Debug 308hugehelpd.obj: hugehelp.c 309 $(CCD) $(CFLAGS) /Zm200 /Fo"$@" hugehelp.c 310writeoutd.obj: writeout.c 311 $(CCD) $(CFLAGS) /Fo"$@" writeout.c 312urlglobd.obj: urlglob.c 313 $(CCD) $(CFLAGS) /Fo"$@" urlglob.c 314getpassd.obj: getpass.c 315 $(CCD) $(CFLAGS) /Fo"$@" getpass.c 316homedird.obj: homedir.c 317 $(CCD) $(CFLAGS) /Fo"$@" homedir.c 318curlutild.obj: curlutil.c 319 $(CCD) $(CFLAGS) /Fo"$@" curlutil.c 320os-specificd.obj: os-specific.c 321 $(CCD) $(CFLAGS) /Fo"$@" os-specific.c 322nonblockd.obj: ../lib/nonblock.c 323 $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c 324rawstrd.obj: ../lib/rawstr.c 325 $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c 326strtoofftd.obj: ../lib/strtoofft.c 327 $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c 328xattrd.obj: xattr.c 329 $(CCD) $(CFLAGS) /Fo"$@" xattr.c 330maind.obj: main.c 331 $(CCD) $(CFLAGS) /Fo"$@" main.c 332curld.res : curl.rc 333 $(RCD) $(RESFLAGS) /Fo"$@" curl.rc 334 335clean: 336 @-erase $(PROGRAM_NAME) 2> NUL 337 @-erase $(RELEASE_OBJS) 2> NUL 338 @-erase $(DEBUG_OBJS) 2> NUL 339 @-erase *.idb 2> NUL 340 @-erase *.pdb 2> NUL 341 @-erase *.pch 2> NUL 342 @-erase *.ilk 2> NUL 343