#############################################################
#
# Makefile for building libcurl with MSVC6
#
# Usage: see usage message below
#        Should be invoked from \lib directory
#        Edit the paths and desired library name
#        SSL path is only required if you intend compiling
#        with SSL.
#
# This make file leaves the result either a .lib or .dll file
# in the \lib directory. It should be called from the \lib
# directory.
#
# An option would have been to allow the source directory to
# be specified, but I saw no requirement.
#
# Another option would have been to leave the .lib and .dll
# files in the "cfg" directory, but then the make file
# in \src would need to be changed.
#
##############################################################
# CHANGE LOG
# ------------------------------------------------------------
# 05.11.2001   John Lask   Initial Release
# 02.05.2002   Miklos Nemeth OPENSSL_PATH environment; no need
#              for OpenSSL libraries when creating a 
#              static libcurl.lib
#
#
##############################################################

LIB_NAME       = libcurl
LIB_NAME_DEBUG = libcurld
!IFNDEF OPENSSL_PATH
OPENSSL_PATH   = ../../openssl-0.9.6
!ENDIF

#############################################################
## Nothing more to do below this line!

CCNODBG   = cl.exe /MD /O2 /D "NDEBUG"
CCDEBUG   = cl.exe /MDd /Od /Gm /Zi  /D "_DEBUG" /GZ
CFLAGSSSL = /D "USE_SSLEAY" /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"
CFLAGS = /I "../include" /nologo /W3 /GX /D "WIN32" /D "VC6" /D "_MBCS" /D "_LIB" /YX /FD /c /D "MSDOS"

LNKDLL    = link.exe /DLL  /def:libcurl.def
LNKLIB    = link.exe -lib
LFLAGS    = /nologo
LINKLIBS  = ws2_32.lib
SSLLIBS   = libeay32.lib ssleay32.lib RSAglue.lib
CFGSET    = FALSE

######################
# release

!IF "$(CFG)" == "release"
TARGET =$(LIB_NAME).lib
DIROBJ =.\$(CFG)
LNK    = $(LNKLIB) /out:$(TARGET)
CC     = $(CCNODBG)
CFGSET = TRUE
!ENDIF

######################
# release-dll

!IF "$(CFG)" == "release-dll"
TARGET =$(LIB_NAME).dll
DIROBJ =.\$(CFG)
LNK    = $(LNKDLL) /out:$(TARGET) /IMPLIB:"$(LIB_NAME).lib"
CC     = $(CCNODBG)
CFGSET = TRUE
!ENDIF

######################
# release-ssl

!IF "$(CFG)" == "release-ssl"
TARGET   =$(LIB_NAME).lib
DIROBJ   =.\$(CFG)
LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)/out32"
LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(TARGET)
LINKLIBS = $(LINKLIBS)
CC       = $(CCNODBG) $(CFLAGSSSL)
CFGSET   = TRUE
!ENDIF

######################
# release-ssl-dll

!IF "$(CFG)" == "release-ssl-dll"
TARGET   =$(LIB_NAME).dll
DIROBJ   =.\$(CFG)
LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)/out32dll"
LNK      = $(LNKDLL) $(LFLAGSSSL) /out:$(TARGET) /IMPLIB:"$(LIB_NAME).lib"
LINKLIBS = $(LINKLIBS) $(SSLLIBS)
CC       = $(CCNODBG)  $(CFLAGSSSL)
CFGSET   = TRUE
!ENDIF

######################
# debug

!IF "$(CFG)" == "debug"
TARGET =$(LIB_NAME_DEBUG).lib
DIROBJ =.\$(CFG)
LNK    = $(LNKLIB) /out:$(TARGET)
CC     = $(CCDEBUG)
CFGSET = TRUE
!ENDIF

######################
# debug-dll

!IF "$(CFG)" == "debug-dll"
TARGET =$(LIB_NAME_DEBUG).dll
DIROBJ =.\$(CFG)
LNK    = $(LNKDLL) /out:$(TARGET) /IMPLIB:"$(LIB_NAME_DEBUG).lib"
CC     = $(CCDEBUG)
CFGSET = TRUE
!ENDIF

######################
# debug-ssl
#todo
!IF "$(CFG)" == "debug-ssl"
TARGET   = $(LIB_NAME_DEBUG).lib
DIROBJ   =.\$(CFG)
LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(TARGET)
LINKLIBS = $(LINKLIBS)
CC       = $(CCDEBUG) $(CFLAGSSSL)
CFGSET   = TRUE
!ENDIF

######################
# debug-ssl-dll

!IF "$(CFG)" == "debug-ssl-dll"
TARGET   =$(LIB_NAME_DEBUG).dll
DIROBJ   =.\$(CFG)
LNK      = $(LNKDLL) $(LFLAGSSSL) /out:$(TARGET) /IMPLIB:"$(LIB_NAME_DEBUG).lib"
LINKLIBS = $(LINKLIBS) $(SSLLIBS)
CC       = $(CCDEBUG) $(CFLAGSSSL)
CFGSET   = TRUE
!ENDIF

#######################
# Usage
#
!IF "$(CFGSET)" == "FALSE"
!MESSAGE Usage: nmake -f makefile.vc6 CFG=<config> <target>
!MESSAGE where <config> is one of:
!MESSAGE   release          - release static library
!MESSAGE   release-dll      - release dll
!MESSAGE   release-ssl      - release static library with ssl
!MESSAGE   release-ssl-dll  - release dll library with ssl
!MESSAGE   debug            - debug static library
!MESSAGE   debug-dll        - debug dll
!MESSAGE   debug-ssl        - debug static library with ssl
!MESSAGE   debug-ssl-dll    - debug dll library with ssl
!MESSAGE <target> can be left blank in which case all is assumed
!ERROR please choose a valid configuration "$(CFG)"
!ENDIF

#######################
#
X_OBJS= \
	$(DIROBJ)\base64.obj \
	$(DIROBJ)\cookie.obj \
	$(DIROBJ)\transfer.obj \
	$(DIROBJ)\escape.obj \
	$(DIROBJ)\formdata.obj \
	$(DIROBJ)\ftp.obj \
	$(DIROBJ)\http.obj \
	$(DIROBJ)\http_chunks.obj \
	$(DIROBJ)\ldap.obj \
	$(DIROBJ)\dict.obj \
	$(DIROBJ)\telnet.obj \
	$(DIROBJ)\getdate.obj \
	$(DIROBJ)\getenv.obj \
	$(DIROBJ)\getpass.obj \
	$(DIROBJ)\hostip.obj \
	$(DIROBJ)\if2ip.obj \
	$(DIROBJ)\mprintf.obj \
	$(DIROBJ)\netrc.obj \
	$(DIROBJ)\progress.obj \
	$(DIROBJ)\sendf.obj \
	$(DIROBJ)\speedcheck.obj \
	$(DIROBJ)\ssluse.obj \
	$(DIROBJ)\timeval.obj \
	$(DIROBJ)\url.obj \
	$(DIROBJ)\file.obj \
	$(DIROBJ)\getinfo.obj \
	$(DIROBJ)\version.obj \
	$(DIROBJ)\easy.obj \
	$(DIROBJ)\strequal.obj \
	$(DIROBJ)\strtok.obj \
	$(DIROBJ)\connect.obj \
	$(DIROBJ)\hash.obj \
	$(DIROBJ)\llist.obj

all : $(TARGET)


$(TARGET): $(X_OBJS)
	$(LNK) $(LFLAGS) $(LINKLIBS) $(X_OBJS)

$(X_OBJS): $(DIROBJ)

$(DIROBJ):
	@if not exist "$(DIROBJ)" mkdir $(DIROBJ)

.SUFFIXES: .c .obj

{.\}.c{$(DIROBJ)\}.obj:
	$(CC) $(CFLAGS) /Fo"$@"  $<

clean:
	-@erase $(DIROBJ)\*.obj
	-@erase vc60.idb
	-@erase vc60.pch
