#############################################################
# $Id$
#
## Makefile for building curl.exe 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
CFLAGS = -g -O2
LDFLAGS =
RC = windres
RCFLAGS = --include-dir=../include -O COFF -i
RM = rm -f
STRIP = strip -s

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

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

INCLUDES = -I. -I.. -I../include -I../lib -I$(ZLIB_PATH)
COMPILE = $(CC) $(INCLUDES) $(CFLAGS)
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
  COMPILE += -DCURL_STATICLIB
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 SSPI
  CFLAGS += -DUSE_WINDOWS_SSPI
endif
curl_LDADD += -lwsock32 -lws2_32 -lwinmm -L$(ZLIB_PATH) -lz

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

curl_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURL_SOURCES) ../lib/timeval.c)))
# curlx_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_ONES))))
# vpath %.c ../lib

.SUFFIXES: .rc .res

all: curl.exe

curl.exe: curl.res $(curl_OBJECTS) $(curl_DEPENDENCIES)
	$(RM) $@
	$(LINK) $< $(curl_OBJECTS) $(curl_LDADD)
	$(STRIP) $@

timeval.o: ../lib/timeval.c
	$(COMPILE) -c $<

# 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

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

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

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

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

clean:
	$(RM) $(curl_OBJECTS) curl.exe

distrib: clean
	$(RM) $(curl_PROGRAMS)
