############################################################
#
#  Makefile.b32 - Borland's C++ Compiler 5.X
#
#  'src' directory
#
#  'BCCDIR' has to be set up to point to the base directory
#  of the compiler, i.e. SET BCCDIR = c:\Borland\BCC55
#
#  Initially written by Jaepil Kim, pit@paradise.net.nz
############################################################

!if "$(__MAKE__)" == ""
!error __MAKE__ not defined. Use Borlands's MAKE to process this makefile.
!endif

# Borland's $(MAKEDIR) expands to the path where make.exe is located,
# use this feature to define BCCDIR when user has not defined BCCDIR.
!ifndef BCCDIR
BCCDIR = $(MAKEDIR)\..
!endif

# Edit the path below to point to the base of your Zlib sources.
!ifndef ZLIB_PATH
ZLIB_PATH = ..\..\zlib-1.2.5
!endif

# Edit the path below to point to the base of your OpenSSL package.
!ifndef OPENSSL_PATH
OPENSSL_PATH = ..\..\openssl-0.9.8q
!endif

# Set program's name
PROGNAME = curl.exe

# Setup environment
CC_CMD   = bcc32 -q -c
LD       = bcc32
RM       = del 2>NUL
MKDIR    = md
RMDIR    = rd /q 2>nul
COPY     = $(COMSPEC) /c copy /y

CC_FLAGS = -5 -O2 -tWM -w -w-aus -w-ccc -w-dup -w-prc -w-pro -w-rch -w-sig -w-spa -w-inl -w-pia -w-pin -Dinline=__inline
LDFLAGS  = -q -lq -lap

SRCDIRS  = .;..\lib
OBJDIR   = .\BCC_objs
INCDIRS  = -I.;..\include;..\lib
LINKLIB  = $(BCCDIR)\lib\cw32mt.lib
DEFINES  = -DNDEBUG -DWIN32

!ifdef DYNAMIC
LIBCURL_LIB = ..\lib\libcurl_imp.lib
!else
LIBCURL_LIB = ..\lib\libcurl.lib
DEFINES = $(DEFINES) -DCURL_STATICLIB
!endif

# ZLIB support is enabled setting WITH_ZLIB=1
!ifdef WITH_ZLIB
DEFINES  = $(DEFINES) -DHAVE_LIBZ -DHAVE_ZLIB_H
INCDIRS  = $(INCDIRS);$(ZLIB_PATH)
LINKLIB  = $(LINKLIB) $(ZLIB_PATH)\zlib.lib
!endif

# SSL support is enabled setting WITH_SSL=1
!ifdef WITH_SSL
DEFINES  = $(DEFINES) -DUSE_SSLEAY
INCDIRS  = $(INCDIRS);$(OPENSSL_PATH)\inc32;$(OPENSSL_PATH)\inc32\openssl
LINKLIB  = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\libeay32.lib
!endif

.autodepend

.path.c   = $(SRCDIRS)
.path.obj = $(OBJDIR)

# Makefile.inc provides the CSOURCES and HHEADERS defines
!undef top_srcdir
!include Makefile.inc

CSOURCES = $(CURL_CFILES) $(CURLX_ONES:/lib/=)
OBJECTS  = $(CSOURCES:.c=.obj)

.c.obj:
	$(CC_CMD) $(CC_FLAGS) $(INCDIRS) $(DEFINES) -o$@ $<

all:	$(OBJDIR) hugehelp $(PROGNAME)

clean:
	cd $(OBJDIR)
	@-$(RM) $(OBJECTS)
	cd ..
	@-$(RMDIR) $(OBJDIR)
	@-$(RM) $(PROGNAME)
	@-$(RM) curl.tds

$(OBJDIR):
	@-$(RMDIR) $(OBJDIR)
	@-$(MKDIR) $(OBJDIR)

!ifdef WITH_ZLIB
hugehelp: ..\docs\MANUAL ..\docs\curl.1 mkhelp.pl
        groff -Tascii -man -P -c ../docs/curl.1 > hugehelp.tmp
        perl -w mkhelp.pl -c ../docs/MANUAL < hugehelp.tmp > hugehelp.c
	@-$(RM) hugehelp.tmp
!else
hugehelp:
	$(COPY) hugehelp.c.cvs hugehelp.c
!endif

$(PROGNAME): $(OBJECTS) $(LIBCURL_LIB) $(LINKLIB)
	@-$(RM) $(PROGNAME)
	$(LD) $(LDFLAGS) -e$@ $**


# End of Makefile.b32
