#############################################################
## Makefile for building libcurl.lib with MSVC6
## Use: nmake -f makefile.vc6 [release | release-ssl | debug]
##      (default is release)
##
## Comments to: Troy Engel <tengel@sonic.net>
## Updated by: Craig Davison <cd@securityfocus.com>

PROGRAM_NAME = libcurl.lib
PROGRAM_NAME_DEBUG = libcurld.lib
OPENSSL_PATH = ../../openssl-0.9.6

########################################################
## Nothing more to do below this line!

## Release
CCR = cl.exe /MD /O2 /D "NDEBUG"
LINKR = link.exe -lib /out:$(PROGRAM_NAME)

## Debug
CCD = cl.exe /MDd /Gm /ZI /Od /D "_DEBUG" /GZ
LINKD = link.exe -lib /out:$(PROGRAM_NAME_DEBUG)

## SSL Release
CCRS = cl.exe /MD /O2 /D "NDEBUG" /D "USE_SSLEAY" /I "$(OPENSSL_PATH)/include" /I "$(OPENSSL_PATH)/include/openssl"
LINKRS = link.exe -lib /out:$(PROGRAM_NAME) /LIBPATH:$(OPENSSL_PATH)/out32dll

CFLAGS = /I "../include" /nologo /W3 /GX /D "WIN32" /D "VC6" /D "_MBCS" /D "_LIB" /YX /FD /c /D "MSDOS"
LFLAGS = /nologo
LINKLIBS = wsock32.lib
LINKSLIBS = libeay32.lib ssleay32.lib RSAglue.lib

RELEASE_OBJS= \
	base64r.obj \
	cookier.obj \
	transferr.obj \
	escaper.obj \
	formdatar.obj \
	ftpr.obj \
	httpr.obj \
	ldapr.obj \
	dictr.obj \
	telnetr.obj \
	getdater.obj \
	getenvr.obj \
	getpassr.obj \
	hostipr.obj \
	if2ipr.obj \
	mprintfr.obj \
	netrcr.obj \
	progressr.obj \
	sendfr.obj \
	speedcheckr.obj \
	ssluser.obj \
	timevalr.obj \
	urlr.obj \
	filer.obj \
	getinfor.obj \
	versionr.obj \
	easyr.obj \
	strequalr.obj

DEBUG_OBJS= \
	base64d.obj \
	cookied.obj \
	transferd.obj \
	escaped.obj \
	formdatad.obj \
	ftpd.obj \
	httpd.obj \
	ldapd.obj \
	dictd.obj \
	telnetd.obj \
	getdated.obj \
	getenvd.obj \
	getpassd.obj \
	hostipd.obj \
	if2ipd.obj \
	mprintfd.obj \
	netrcd.obj \
	progressd.obj \
	sendfd.obj \
	speedcheckd.obj \
	sslused.obj \
	timevald.obj \
	urld.obj \
	filed.obj \
	getinfod.obj \
	versiond.obj  \
	easyd.obj \
	strequald.obj

RELEASE_SSL_OBJS= \
	base64rs.obj \
	cookiers.obj \
	transferrs.obj \
	escapers.obj \
	formdatars.obj \
	ftprs.obj \
	httprs.obj \
	ldaprs.obj \
	dictrs.obj \
	telnetrs.obj \
	getdaters.obj \
	getenvrs.obj \
	getpassrs.obj \
	hostiprs.obj \
	if2iprs.obj \
	mprintfrs.obj \
	netrcrs.obj \
	progressrs.obj \
	sendfrs.obj \
	speedcheckrs.obj \
	sslusers.obj \
	timevalrs.obj \
	urlrs.obj \
	filers.obj \
	getinfors.obj \
	versionrs.obj \
	easyrs.obj \
	strequalrs.obj

LINK_OBJS= \
	base64.obj \
	cookie.obj \
	transfer.obj \
	escape.obj \
	formdata.obj \
	ftp.obj \
	http.obj \
	ldap.obj \
	dict.obj \
	telnet.obj \
	getdate.obj \
	getenv.obj \
	getpass.obj \
	hostip.obj \
	if2ip.obj \
	mprintf.obj \
	netrc.obj \
	progress.obj \
	sendf.obj \
	speedcheck.obj \
	ssluse.obj \
	timeval.obj \
	url.obj \
	file.obj \
	getinfo.obj \
	version.obj \
	easy.obj \
	strequal.obj

all : release

release: $(RELEASE_OBJS)
	$(LINKR) $(LFLAGS) $(LINKLIBS) $(LINK_OBJS)

debug: $(DEBUG_OBJS)
	$(LINKD) $(LFLAGS) $(LINKLIBS) $(LINK_OBJS)

release-ssl: $(RELEASE_SSL_OBJS)
	$(LINKRS) $(LFLAGS) $(LINKLIBS) $(LINKSLIBS) $(LINK_OBJS)

## Release
base64r.obj: base64.c
	$(CCR) $(CFLAGS) base64.c
cookier.obj: cookie.c
	$(CCR) $(CFLAGS) cookie.c
transferr.obj: transfer.c
	$(CCR) $(CFLAGS) transfer.c
escaper.obj: escape.c
	$(CCR) $(CFLAGS) escape.c
formdatar.obj: formdata.c
	$(CCR) $(CFLAGS) formdata.c
ftpr.obj: ftp.c
	$(CCR) $(CFLAGS) ftp.c
httpr.obj: http.c
	$(CCR) $(CFLAGS) http.c
ldapr.obj: ldap.c
	$(CCR) $(CFLAGS) ldap.c
dictr.obj: dict.c
	$(CCR) $(CFLAGS) dict.c
telnetr.obj: telnet.c
	$(CCR) $(CFLAGS) telnet.c
getdater.obj: getdate.c
	$(CCR) $(CFLAGS) getdate.c
getenvr.obj: getenv.c
	$(CCR) $(CFLAGS) getenv.c
getpassr.obj: getpass.c
	$(CCR) $(CFLAGS) getpass.c
hostipr.obj: hostip.c
	$(CCR) $(CFLAGS) hostip.c
if2ipr.obj: if2ip.c
	$(CCR) $(CFLAGS) if2ip.c
mprintfr.obj: mprintf.c
	$(CCR) $(CFLAGS) mprintf.c
netrcr.obj: netrc.c
	$(CCR) $(CFLAGS) netrc.c
progressr.obj: progress.c
	$(CCR) $(CFLAGS) progress.c
sendfr.obj: sendf.c
	$(CCR) $(CFLAGS) sendf.c
speedcheckr.obj: speedcheck.c
	$(CCR) $(CFLAGS) speedcheck.c
ssluser.obj: ssluse.c
	$(CCR) $(CFLAGS) ssluse.c
timevalr.obj: timeval.c
	$(CCR) $(CFLAGS) timeval.c
urlr.obj: url.c
	$(CCR) $(CFLAGS) url.c
filer.obj: file.c
	$(CCR) $(CFLAGS) file.c
getinfor.obj: getinfo.c
	$(CCR) $(CFLAGS) getinfo.c
versionr.obj: version.c
	$(CCR) $(CFLAGS) version.c
easyr.obj: easy.c
	$(CCR) $(CFLAGS) easy.c
strequalr.obj: strequal.c
	$(CCR) $(CFLAGS) strequal.c

## Debug
base64d.obj: base64.c
	$(CCD) $(CFLAGS) base64.c
cookied.obj: cookie.c
	$(CCD) $(CFLAGS) cookie.c
transferd.obj: transfer.c
	$(CCD) $(CFLAGS) transfer.c
escaped.obj: escape.c
	$(CCD) $(CFLAGS) escape.c
formdatad.obj: formdata.c
	$(CCD) $(CFLAGS) formdata.c
ftpd.obj: ftp.c
	$(CCD) $(CFLAGS) ftp.c
httpd.obj: http.c
	$(CCD) $(CFLAGS) http.c
ldapd.obj: ldap.c
	$(CCD) $(CFLAGS) ldap.c
dictd.obj: dict.c
	$(CCD) $(CFLAGS) dict.c
telnetd.obj: telnet.c
	$(CCD) $(CFLAGS) telnet.c
getdated.obj: getdate.c
	$(CCD) $(CFLAGS) getdate.c
getenvd.obj: getenv.c
	$(CCD) $(CFLAGS) getenv.c
getpassd.obj: getpass.c
	$(CCD) $(CFLAGS) getpass.c
hostipd.obj: hostip.c
	$(CCD) $(CFLAGS) hostip.c
if2ipd.obj: if2ip.c
	$(CCD) $(CFLAGS) if2ip.c
mprintfd.obj: mprintf.c
	$(CCD) $(CFLAGS) mprintf.c
netrcd.obj: netrc.c
	$(CCD) $(CFLAGS) netrc.c
progressd.obj: progress.c
	$(CCD) $(CFLAGS) progress.c
sendfd.obj: sendf.c
	$(CCD) $(CFLAGS) sendf.c
speedcheckd.obj: speedcheck.c
	$(CCD) $(CFLAGS) speedcheck.c
sslused.obj: ssluse.c
	$(CCD) $(CFLAGS) ssluse.c
timevald.obj: timeval.c
	$(CCD) $(CFLAGS) timeval.c
urld.obj: url.c
	$(CCD) $(CFLAGS) url.c
filed.obj: file.c
	$(CCD) $(CFLAGS) file.c
getinfod.obj: getinfo.c
	$(CCD) $(CFLAGS) getinfo.c
versiond.obj: version.c
	$(CCD) $(CFLAGS) version.c
easyd.obj: easy.c
	$(CCD) $(CFLAGS) easy.c
strequald.obj: strequal.c
	$(CCD) $(CFLAGS) strequal.c


## Release SSL
base64rs.obj: base64.c
	$(CCRS) $(CFLAGS) base64.c
cookiers.obj: cookie.c
	$(CCRS) $(CFLAGS) cookie.c
transferrs.obj: transfer.c
	$(CCRS) $(CFLAGS) transfer.c
escapers.obj: escape.c
	$(CCRS) $(CFLAGS) escape.c
formdatars.obj: formdata.c
	$(CCRS) $(CFLAGS) formdata.c
ftprs.obj: ftp.c
	$(CCRS) $(CFLAGS) ftp.c
httprs.obj: http.c
	$(CCRS) $(CFLAGS) http.c
ldaprs.obj: ldap.c
	$(CCRS) $(CFLAGS) ldap.c
dictrs.obj: dict.c
	$(CCRS) $(CFLAGS) dict.c
telnetrs.obj: telnet.c
	$(CCRS) $(CFLAGS) telnet.c
getdaters.obj: getdate.c
	$(CCRS) $(CFLAGS) getdate.c
getenvrs.obj: getenv.c
	$(CCRS) $(CFLAGS) getenv.c
getpassrs.obj: getpass.c
	$(CCRS) $(CFLAGS) getpass.c
hostiprs.obj: hostip.c
	$(CCRS) $(CFLAGS) hostip.c
if2iprs.obj: if2ip.c
	$(CCRS) $(CFLAGS) if2ip.c
mprintfrs.obj: mprintf.c
	$(CCRS) $(CFLAGS) mprintf.c
netrcrs.obj: netrc.c
	$(CCRS) $(CFLAGS) netrc.c
progressrs.obj: progress.c
	$(CCRS) $(CFLAGS) progress.c
sendfrs.obj: sendf.c
	$(CCRS) $(CFLAGS) sendf.c
speedcheckrs.obj: speedcheck.c
	$(CCRS) $(CFLAGS) speedcheck.c
sslusers.obj: ssluse.c
	$(CCRS) $(CFLAGS) ssluse.c
timevalrs.obj: timeval.c
	$(CCRS) $(CFLAGS) timeval.c
urlrs.obj: url.c
	$(CCRS) $(CFLAGS) url.c
filers.obj: file.c
	$(CCRS) $(CFLAGS) file.c
getinfors.obj: getinfo.c
	$(CCRS) $(CFLAGS) getinfo.c
versionrs.obj: version.c
	$(CCRS) $(CFLAGS) version.c
easyrs.obj: easy.c
	$(CCRS) $(CFLAGS) easy.c
strequalrs.obj: strequal.c
	$(CCRS) $(CFLAGS) strequal.c


clean:
	-@erase *.obj
	-@erase vc60.idb
	-@erase vc60.pch

distrib: clean
	-@erase $(PROGRAM_NAME)

