############################################################
# $Id$
#
#  Makefile.b32 - Borland's C++ Compiler 5.X
#
#  'lib' directory
#
#  Requires 'Makefile.b32.resp'
#
#  Written by Jaepil Kim, pit@paradise.net.nz
############################################################

# Setup environment
CXX	   = bcc32
RM	   = del
LIB	   = tlib
TOPDIR	   = ..
CURNTDIR   = .
CXXFLAGS   = -5 -O2 -w-aus -w-ccc -w-csu -w-par -w-pia -w-rch -w-inl -w-ngu -w-pro -tWM
DEFINES    = -DLIBCURL_BIGENDIAN=0 -DNDEBUG -DWIN32 -DCONSOLE -DMBCS
INCDIRS    = -I$(CURNTDIR);$(TOPDIR)/include/

# 'BCCDIR' has to be set up in your c:\autoexec.bat
# i.e. SET BCCDIR = c:\Borland\BCC55
# where c:\Borland\BCC55 is the compiler is installed
LINKLIB	   = $(BCCDIR)/lib/psdk/ws2_32.lib
LIBCURLLIB = libcurl.lib

.SUFFIXES: .c

SOURCES	   = \
	base64.c \
	cookie.c \
	transfer.c \
	escape.c \
	formdata.c \
	ftp.c \
	http.c \
        http_chunks.c \
	ldap.c \
	dict.c \
	telnet.c \
	getdate.c \
	getenv.c \
	getpass.c \
	hostip.c \
	if2ip.c \
	mprintf.c \
	netrc.c \
	progress.c \
	sendf.c \
	speedcheck.c \
	ssluse.c \
	timeval.c \
	url.c \
	file.c \
	getinfo.c \
	version.c \
	easy.c \
	strequal.c \
	strtok.c \
	connect.c

OBJECTS = $(SOURCES:.c=.obj)

.c.obj:
	$(CXX) -c $(INCDIRS) $(CXXFLAGS) $(DEFINES) $<

all:	$(LIBCURLLIB)

clean:
	-$(RM) $(LIBCURLLIB)
        -$(RM) *.obj

$(LIBCURLLIB):  $(LINKLIB) $(OBJECTS) Makefile.b32.resp
	-$(RM) $(LIBCURLLIB)
	$(LIB) $(LIBCURLLIB) @Makefile.b32.resp


