#############################################################
# $Id$
#
## Makefile for building libcurl.a with MingW32 (GCC-3.2) and
## optionally OpenSSL (0.9.8)
##
## Use: make -f Makefile.m32 [SSL=1] [SSH2=1] [DYN=1]
##
## Comments to: Troy Engel <tengel@sonic.net> or
##              Joern Hartroth <hartroth@acm.org>

ifndef OPENSSL_PATH
OPENSSL_PATH = ../../openssl-0.9.8d
endif
ifndef LIBSSH2_PATH
LIBSSH2_PATH = ../../libssh2-0.14
endif
ifndef ZLIB_PATH
ZLIB_PATH = ../../zlib-1.2.3
endif

CC = gcc
AR = ar
RM = rm -f
RANLIB = ranlib
STRIP = strip -g

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

INCLUDES = -I. -I../include
CFLAGS = -g -O2 -DBUILDING_LIBCURL -DHAVE_LONGLONG
ifdef SSH2
  INCLUDES += -I"$(LIBSSH2_PATH)/include" -I"$(LIBSSH2_PATH)/win32"
  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
  DLL_LIBS += -L$(LIBSSH2_PATH)/win32 -lssh2
endif
ifdef SSL
  INCLUDES += -I"$(OPENSSL_PATH)/outinc" -I"$(OPENSSL_PATH)/outinc/openssl"
  CFLAGS += -DUSE_SSLEAY -DUSE_OPENSSL -DHAVE_OPENSSL_ENGINE_H -DHAVE_OPENSSL_PKCS12_H \
            -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES -DOPENSSL_NO_KRB5 \
            -DCURL_WANTS_CA_BUNDLE_ENV
  DLL_LIBS += -L$(OPENSSL_PATH)/out -leay32 -lssl32
endif
ifdef ZLIB
  INCLUDES += -I"$(ZLIB_PATH)"
  CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
  DLL_LIBS += -L$(ZLIB_PATH) -lz
endif
ifdef SSPI
  CFLAGS += -DUSE_WINDOWS_SSPI
endif
ifdef IPV6
  CFLAGS += -DENABLE_IPV6
endif
COMPILE = $(CC) $(INCLUDES) $(CFLAGS)

# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc

libcurl_a_OBJECTS := $(patsubst %.c,%.o,$(strip $(CSOURCES)))

libcurl_a_LIBRARIES = libcurl.a
libcurl_a_DEPENDENCIES = $(strip $(CSOURCES) $(HHEADERS))

all: libcurl.a libcurl.dll libcurldll.a

libcurl.a: $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES)
	$(RM) libcurl.a
	$(AR) cru libcurl.a $(libcurl_a_OBJECTS)
	$(RANLIB) libcurl.a
	$(STRIP) $@

RESOURCE = libcurl.res

# remove the last line above to keep debug info

libcurl.dll libcurldll.a: $(libcurl_a_OBJECTS) $(RESOURCE)
	$(RM) $@
	$(CC) -s -shared -Wl,--out-implib,libcurldll.a -o libcurl.dll \
	  $(libcurl_a_OBJECTS) $(RESOURCE) $(DLL_LIBS) -lws2_32 -lwinmm

# remove the above '-s' to keep debug info

.c.o:
	$(COMPILE) -c $<

libcurl.res: libcurl.rc
	windres -DCURLDEBUG=0 -O COFF -o $@ -i $^

clean:
	$(RM) $(libcurl_a_OBJECTS) $(RESOURCE)

distrib: clean
	$(RM) $(libcurl_a_LIBRARIES)

