#########################################################################
#
## Makefile for building curl.exe with MingW32 (GCC-3.2 or later)
## and optionally OpenSSL (0.9.8), libssh2 (1.2), zlib (1.2.5), librtmp (2.3)
##
## Usage:   mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-spi-winidn
##
## Hint: you can also set environment vars to control the build, f.e.:
## set ZLIB_PATH=c:/zlib-1.2.5
## set ZLIB=1
##
## Comments to: Troy Engel <tengel@sonic.net> or
##              Joern Hartroth <hartroth@acm.org>
#########################################################################

# 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.8r
endif
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
LIBSSH2_PATH = ../../libssh2-1.3.0
endif
# Edit the path below to point to the base of your librtmp package.
ifndef LIBRTMP_PATH
LIBRTMP_PATH = ../../librtmp-2.3
endif
# Edit the path below to point to the base of your libidn package.
ifndef LIBIDN_PATH
LIBIDN_PATH = ../../libidn-1.18
endif
# Edit the path below to point to the base of your MS idndlpackage. 
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
# http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ad6158d7-ddba-416a-9109-07607425a815
ifndef WINIDN_PATH
WINIDN_PATH = ../../Microsoft IDN Mitigation APIs
endif
# Edit the path below to point to the base of your Novell LDAP NDK.
ifndef LDAP_SDK
LDAP_SDK = c:/novell/ndk/cldapsdk/win32
endif

# Edit the path below to point to the base of your c-ares package.
ifndef LIBCARES_PATH
LIBCARES_PATH = ../ares
endif

# Edit the var below to set to your architecture or set environment var.
ifndef ARCH
ARCH = w32
endif

CC = gcc
CFLAGS = -g -O2 -Wall
ifeq ($(ARCH),w64)
CFLAGS += -D_AMD64_
endif
# comment LDFLAGS below to keep debug info
LDFLAGS = -s
RC = windres
RCFLAGS = --include-dir=../include -O COFF -i
RM = del /q /f 2>NUL
CP = copy

# We may need these someday
# PERL = perl
# NROFF = nroff

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

ifeq ($(findstring -dyn,$(CFG)),-dyn)
DYN = 1
endif
ifeq ($(findstring -ares,$(CFG)),-ares)
ARES = 1
endif
ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
RTMP = 1
SSL = 1
ZLIB = 1
endif
ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
SSH2 = 1
SSL = 1
ZLIB = 1
endif
ifeq ($(findstring -ssl,$(CFG)),-ssl)
SSL = 1
endif
ifeq ($(findstring -zlib,$(CFG)),-zlib)
ZLIB = 1
endif
ifeq ($(findstring -idn,$(CFG)),-idn)
IDN = 1
endif
ifeq ($(findstring -winidn,$(CFG)),-winidn)
WINIDN = 1
endif
ifeq ($(findstring -sspi,$(CFG)),-sspi)
SSPI = 1
endif
ifeq ($(findstring -spnego,$(CFG)),-spnego)
SPNEGO = 1
endif
ifeq ($(findstring -ldaps,$(CFG)),-ldaps)
LDAPS = 1
endif
ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
IPV6 = 1
endif

INCLUDES = -I. -I.. -I../include -I../lib
LINK = $(CC) $(LDFLAGS) -o $@

curl_PROGRAMS = curl.exe
ifdef DYN
  curl_DEPENDENCIES = ../lib/libcurldll.a ../lib/libcurl.dll
  curl_LDADD = -L../lib -lcurldll
else
  curl_DEPENDENCIES = ../lib/libcurl.a
  curl_LDADD = -L../lib -lcurl
  CFLAGS += -DCURL_STATICLIB
endif
ifdef ARES
  ifndef DYN
    curl_DEPENDENCIES += $(LIBCARES_PATH)/libcares.a
  endif
  CFLAGS += -DUSE_ARES
  curl_LDADD += -L$(LIBCARES_PATH) -lcares
endif
ifdef RTMP
  CFLAGS += -DUSE_LIBRTMP
  curl_LDADD += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
endif
ifdef SSH2
  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
  curl_LDADD += -L$(LIBSSH2_PATH)/win32 -lssh2
endif
ifdef SSL
  CFLAGS += -DUSE_SSLEAY -DHAVE_OPENSSL_ENGINE_H
  curl_LDADD += -L$(OPENSSL_PATH)/out -leay32 -lssl32
endif
ifdef ZLIB
  INCLUDES += -I"$(ZLIB_PATH)"
  CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
  curl_LDADD += -L$(ZLIB_PATH) -lz
endif
ifdef IDN
  INCLUDES += -I"$(LIBIDN_PATH)/include"
  CFLAGS += -DUSE_LIBIDN
  curl_LDADD += -L$(LIBIDN_PATH)/lib -lidn
else
ifdef WINIDN
  CFLAGS += -DUSE_WIN32_IDN
  DLL_LIBS += -L"$(WINIDN_PATH)" -lnormaliz
endif
endif
ifdef SSPI
  CFLAGS += -DUSE_WINDOWS_SSPI
endif
ifdef SPNEGO
  CFLAGS += -DHAVE_SPNEGO
endif
ifdef IPV6
  CFLAGS += -DENABLE_IPV6
endif
ifdef LDAPS
  CFLAGS += -DHAVE_LDAP_SSL
endif
ifdef USE_LDAP_NOVELL
  CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
  curl_LDADD += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
endif
ifdef USE_LDAP_OPENLDAP
  CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK
  curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
endif
ifndef USE_LDAP_NOVELL
ifndef USE_LDAP_OPENLDAP
curl_LDADD += -lwldap32
endif
endif
curl_LDADD += -lws2_32
COMPILE = $(CC) $(INCLUDES) $(CFLAGS)

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

curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
ifdef DYN
curlx_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_ONES))))
curl_OBJECTS += $(curlx_OBJECTS)
vpath %.c ../lib
endif

RESOURCE = curl.res

.SUFFIXES: .rc .res

all: curl.exe

curl.exe: $(RESOURCE) $(curl_OBJECTS) $(curl_DEPENDENCIES)
	-$(RM) $@
	$(LINK) $< $(curl_OBJECTS) $(curl_LDADD)

# We don't have nroff normally under win32
# hugehelp.c: ../README.curl ../curl.1 mkhelp.pl
# 	-$(RM) hugehelp.c
# 	$(NROFF) -man ../curl.1 | $(PERL) mkhelp.pl ../README.curl > hugehelp.c

hugehelp.c:
	@echo Creating $@
	@$(CP) hugehelp.c.cvs $@

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

.rc.res:
	$(RC) $(RCFLAGS) $< -o $@

clean:
ifeq "$(wildcard hugehelp.c.cvs)" "hugehelp.c.cvs"
	-$(RM) hugehelp.c
endif
	-$(RM) $(curl_OBJECTS) $(RESOURCE)

distclean vclean: clean
	-$(RM) $(curl_PROGRAMS)

