#############################################################
#
## Makefile for building libcurl.a with MingW32 (GCC-2.95) and
## optionally OpenSSL (0.9.6)
## Use: make -f Makefile.m32
##
## Comments to: Troy Engel <tengel@sonic.net> or
##              Joern Hartroth <hartroth@acm.org>

CC = gcc
AR = ar
RANLIB = ranlib
STRIP = strip -g
OPENSSL_PATH = ../../openssl-0.9.6b

########################################################
## Nothing more to do below this line!

INCLUDES = -I. -I.. -I../include -I../src
CFLAGS = -g -O2 -DMINGW32
ifdef SSL
  INCLUDES += -I"$(OPENSSL_PATH)/outinc" -I"$(OPENSSL_PATH)/outinc/openssl"
  CFLAGS += -DUSE_SSLEAY
  DLL_LIBS = -leay32 -lssl32 -lRSAglue
endif
COMPILE = $(CC) $(INCLUDES) $(CFLAGS)

libcurl_a_LIBRARIES = libcurl.a

libcurl_a_SOURCES = arpa_telnet.h file.c getpass.h netrc.h timeval.c base64.c \
	file.h hostip.c progress.c timeval.h base64.h formdata.c hostip.h progress.h	\
	cookie.c formdata.h http.c sendf.c cookie.h ftp.c http.h sendf.h url.c dict.c	\
	ftp.h if2ip.c speedcheck.c url.h dict.h getdate.c if2ip.h speedcheck.h		\
	urldata.h transfer.c getdate.h ldap.c ssluse.c version.c transfer.h getenv.c	\
	ldap.h ssluse.h escape.c getenv.h mprintf.c telnet.c escape.h getpass.c netrc.c	\
	telnet.h getinfo.c strequal.c strequal.h easy.c security.h		\
	security.c krb4.h krb4.c memdebug.h memdebug.c inet_ntoa_r.h http_chunks.h http_chunks.c \
	strtok.c connect.c hash.c llist.c

libcurl_a_OBJECTS =  file.o timeval.o base64.o hostip.o progress.o \
	formdata.o cookie.o http.o sendf.o ftp.o url.o dict.o if2ip.o \
	speedcheck.o getdate.o transfer.o ldap.o ssluse.o version.o \
	getenv.o escape.o mprintf.o telnet.o getpass.o netrc.o getinfo.o \
	strequal.o easy.o security.o krb4.o memdebug.o http_chunks.o \
	strtok.o connect.o hash.o llist.o

LIBRARIES =  $(libcurl_a_LIBRARIES)
SOURCES = $(libcurl_a_SOURCES)
OBJECTS = $(libcurl_a_OBJECTS)


all: libcurl.a libcurl.dll libcurldll.a

libcurl.a: $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES)
	-@erase libcurl.a
	$(AR) cru libcurl.a $(libcurl_a_OBJECTS)
	$(RANLIB) libcurl.a
	$(STRIP) $@

# remove the last line above to keep debug info

libcurl.dll libcurldll.a: libcurl.a libcurl.def dllinit.o
	-@erase $@
	dllwrap --dllname $@ --output-lib libcurldll.a --export-all --def libcurl.def $(libcurl_a_LIBRARIES) dllinit.o -L$(OPENSSL_PATH)/out $(DLL_LIBS) -lwsock32 -lws2_32
	$(STRIP) $@

# remove the last line above to keep debug info

.c.o:
	$(COMPILE) -c $<

.s.o:
	$(COMPILE) -c $<

.S.o:
	$(COMPILE) -c $<

clean:
	-@erase $(libcurl_a_OBJECTS)

distrib: clean

	-@erase $(libcurl_a_LIBRARIES)

