
SSLeay was the name of the library that was subsequently turned into OpenSSL many moons ago (1999). curl does not work with the old SSLeay library since years. This is now reflected by only using USE_OPENSSL in code that depends on OpenSSL.
345 lines
8.7 KiB
Makefile
345 lines
8.7 KiB
Makefile
###########################################################################
|
|
#
|
|
## Makefile for building curl.exe with MingW (GCC-3.2 or later)
|
|
## and optionally OpenSSL (0.9.8), libssh2 (1.3), 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.8
|
|
## set ZLIB=1
|
|
#
|
|
###########################################################################
|
|
|
|
# Edit the path below to point to the base of your Zlib sources.
|
|
ifndef ZLIB_PATH
|
|
ZLIB_PATH = ../../zlib-1.2.8
|
|
endif
|
|
# Edit the path below to point to the base of your OpenSSL package.
|
|
ifndef OPENSSL_PATH
|
|
OPENSSL_PATH = ../../openssl-0.9.8zc
|
|
endif
|
|
# Edit the path below to point to the base of your LibSSH2 package.
|
|
ifndef LIBSSH2_PATH
|
|
LIBSSH2_PATH = ../../libssh2-1.4.3
|
|
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 libmetalink package.
|
|
ifndef LIBMETALINK_PATH
|
|
LIBMETALINK_PATH = ../../libmetalink-0.1.2
|
|
endif
|
|
# Edit the path below to point to the base of your libexpat package.
|
|
ifndef LIBEXPAT_PATH
|
|
LIBEXPAT_PATH = ../../expat-2.1.0
|
|
endif
|
|
# Edit the path below to point to the base of your libxml2 package.
|
|
ifndef LIBXML2_PATH
|
|
LIBXML2_PATH = ../../libxml2-2.9.0
|
|
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 IDN package.
|
|
# 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 nghttp2 package.
|
|
ifndef NGHTTP2_PATH
|
|
NGHTTP2_PATH = ../../nghttp2-0.6.7
|
|
endif
|
|
|
|
PROOT = ..
|
|
|
|
# Edit the path below to point to the base of your c-ares package.
|
|
ifndef LIBCARES_PATH
|
|
LIBCARES_PATH = $(PROOT)/ares
|
|
endif
|
|
|
|
CC = $(CROSSPREFIX)gcc
|
|
CFLAGS = -g -O2 -Wall
|
|
CFLAGS += -fno-strict-aliasing
|
|
# comment LDFLAGS below to keep debug info
|
|
LDFLAGS = -s
|
|
AR = $(CROSSPREFIX)ar
|
|
RC = $(CROSSPREFIX)windres
|
|
RCFLAGS = --include-dir=$(PROOT)/include -O COFF
|
|
STRIP = $(CROSSPREFIX)strip -g
|
|
|
|
# We may need these someday
|
|
# PERL = perl
|
|
# NROFF = nroff
|
|
|
|
# Set environment var ARCH to your architecture to override autodetection.
|
|
ifndef ARCH
|
|
ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
|
|
ARCH = w64
|
|
else
|
|
ARCH = w32
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(ARCH),w64)
|
|
CFLAGS += -m64 -D_AMD64_
|
|
LDFLAGS += -m64
|
|
RCFLAGS += -F pe-x86-64
|
|
else
|
|
CFLAGS += -m32
|
|
LDFLAGS += -m32
|
|
RCFLAGS += -F pe-i386
|
|
endif
|
|
|
|
# Platform-dependent helper tool macros
|
|
ifeq ($(findstring /sh,$(SHELL)),/sh)
|
|
DEL = rm -f $1
|
|
RMDIR = rm -fr $1
|
|
MKDIR = mkdir -p $1
|
|
COPY = -cp -afv $1 $2
|
|
#COPYR = -cp -afr $1/* $2
|
|
COPYR = -rsync -aC $1/* $2
|
|
TOUCH = touch $1
|
|
CAT = cat
|
|
ECHONL = echo ""
|
|
DL = '
|
|
else
|
|
ifeq "$(OS)" "Windows_NT"
|
|
DEL = -del 2>NUL /q /f $(subst /,\,$1)
|
|
RMDIR = -rd 2>NUL /q /s $(subst /,\,$1)
|
|
else
|
|
DEL = -del 2>NUL $(subst /,\,$1)
|
|
RMDIR = -deltree 2>NUL /y $(subst /,\,$1)
|
|
endif
|
|
MKDIR = -md 2>NUL $(subst /,\,$1)
|
|
COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
|
|
COPYR = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2)
|
|
TOUCH = copy 2>&1>NUL /b $(subst /,\,$1) +,,
|
|
CAT = type
|
|
ECHONL = $(ComSpec) /c echo.
|
|
endif
|
|
|
|
########################################################
|
|
## 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 -sync,$(CFG)),-sync)
|
|
SYNC = 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 -ldaps,$(CFG)),-ldaps)
|
|
LDAPS = 1
|
|
endif
|
|
ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
|
|
IPV6 = 1
|
|
endif
|
|
ifeq ($(findstring -metalink,$(CFG)),-metalink)
|
|
METALINK = 1
|
|
endif
|
|
ifeq ($(findstring -winssl,$(CFG)),-winssl)
|
|
WINSSL = 1
|
|
SSPI = 1
|
|
endif
|
|
ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
|
|
NGHTTP2 = 1
|
|
endif
|
|
|
|
INCLUDES = -I. -I../include -I../lib
|
|
|
|
ifdef DYN
|
|
curl_DEPENDENCIES = $(PROOT)/lib/libcurldll.a $(PROOT)/lib/libcurl.dll
|
|
curl_LDADD = -L$(PROOT)/lib -lcurldll
|
|
else
|
|
curl_DEPENDENCIES = $(PROOT)/lib/libcurl.a
|
|
curl_LDADD = -L$(PROOT)/lib -lcurl
|
|
CFLAGS += -DCURL_STATICLIB
|
|
LDFLAGS += -static
|
|
endif
|
|
ifdef SYNC
|
|
CFLAGS += -DUSE_SYNC_DNS
|
|
else
|
|
ifdef ARES
|
|
ifndef DYN
|
|
curl_DEPENDENCIES += $(LIBCARES_PATH)/libcares.a
|
|
endif
|
|
CFLAGS += -DUSE_ARES -DCARES_STATICLIB
|
|
curl_LDADD += -L"$(LIBCARES_PATH)" -lcares
|
|
endif
|
|
endif
|
|
ifdef RTMP
|
|
CFLAGS += -DUSE_LIBRTMP
|
|
curl_LDADD += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
|
|
endif
|
|
ifdef NGHTTP2
|
|
CFLAGS += -DUSE_NGHTTP2
|
|
curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
|
|
endif
|
|
ifdef SSH2
|
|
CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
|
|
curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
|
|
endif
|
|
ifdef SSL
|
|
ifndef OPENSSL_INCLUDE
|
|
ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
|
|
OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
|
|
endif
|
|
ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
|
|
OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
|
|
endif
|
|
endif
|
|
ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h"
|
|
$(error Invalid path to OpenSSL package: $(OPENSSL_PATH))
|
|
endif
|
|
ifndef OPENSSL_LIBPATH
|
|
OPENSSL_LIBS = -lssl -lcrypto
|
|
ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out"
|
|
OPENSSL_LIBPATH = $(OPENSSL_PATH)/out
|
|
ifdef DYN
|
|
OPENSSL_LIBS = -lssl32 -leay32
|
|
endif
|
|
endif
|
|
ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib"
|
|
OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib
|
|
endif
|
|
endif
|
|
ifndef DYN
|
|
OPENSSL_LIBS += -lgdi32 -lcrypt32
|
|
endif
|
|
INCLUDES += -I"$(OPENSSL_INCLUDE)"
|
|
CFLAGS += -DUSE_OPENSSL
|
|
curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
|
|
endif
|
|
ifdef ZLIB
|
|
INCLUDES += -I"$(ZLIB_PATH)"
|
|
CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
|
|
curl_LDADD += -L"$(ZLIB_PATH)" -lz
|
|
endif
|
|
ifdef IDN
|
|
CFLAGS += -DUSE_LIBIDN
|
|
curl_LDADD += -L"$(LIBIDN_PATH)/lib" -lidn
|
|
else
|
|
ifdef WINIDN
|
|
CFLAGS += -DUSE_WIN32_IDN
|
|
curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
|
|
endif
|
|
endif
|
|
ifdef METALINK
|
|
INCLUDES += -I"$(LIBMETALINK_PATH)/include"
|
|
CFLAGS += -DUSE_METALINK
|
|
curl_LDADD += -L"$(LIBMETALINK_PATH)/lib" -lmetalink
|
|
ifndef DYN
|
|
ifeq ($(findstring libexpat_metalink_parser.o,$(shell $(AR) t "$(LIBMETALINK_PATH)/lib/libmetalink.a")),libexpat_metalink_parser.o)
|
|
curl_LDADD += -L"$(LIBEXPAT_PATH)/lib" -lexpat
|
|
else
|
|
curl_LDADD += -L"$(LIBXML2_PATH)/lib" -lxml2
|
|
endif
|
|
endif
|
|
endif
|
|
ifdef SSPI
|
|
CFLAGS += -DUSE_WINDOWS_SSPI
|
|
ifdef WINSSL
|
|
CFLAGS += -DUSE_SCHANNEL
|
|
endif
|
|
endif
|
|
ifdef IPV6
|
|
CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
|
|
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
|
|
|
|
# Makefile.inc provides the CSOURCES and HHEADERS defines
|
|
include Makefile.inc
|
|
|
|
curl_PROGRAMS = curl.exe
|
|
curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
|
|
curlx_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))
|
|
ifdef DYN
|
|
curl_OBJECTS += $(curlx_OBJECTS)
|
|
vpath %.c $(PROOT)/lib
|
|
endif
|
|
|
|
RESOURCE = curl.res
|
|
|
|
|
|
all: $(curl_PROGRAMS)
|
|
|
|
curl.exe: $(RESOURCE) $(curl_OBJECTS) $(curl_DEPENDENCIES)
|
|
$(call DEL, $@)
|
|
$(CC) $(LDFLAGS) -o $@ $< $(curl_OBJECTS) $(curl_LDADD)
|
|
|
|
# We don't have nroff normally under win32
|
|
# tool_hugehelp.c: $(PROOT)/docs/MANUAL $(PROOT)/docs/curl.1 mkhelp.pl
|
|
# @$(call DEL, tool_hugehelp.c)
|
|
# $(NROFF) -man $(PROOT)/docs/curl.1 | $(PERL) mkhelp.pl $(PROOT)/docs/MANUAL > tool_hugehelp.c
|
|
|
|
tool_hugehelp.c:
|
|
@echo Creating $@
|
|
@$(call COPY, $@.cvs, $@)
|
|
|
|
%.o: %.c
|
|
$(CC) $(INCLUDES) $(CFLAGS) -c $<
|
|
|
|
%.res: %.rc
|
|
$(RC) $(RCFLAGS) -i $< -o $@
|
|
|
|
clean:
|
|
ifeq "$(wildcard tool_hugehelp.c.cvs)" "tool_hugehelp.c.cvs"
|
|
@$(call DEL, tool_hugehelp.c)
|
|
endif
|
|
@$(call DEL, $(curl_OBJECTS) $(curlx_OBJECTS) $(RESOURCE))
|
|
|
|
distclean vclean: clean
|
|
@$(call DEL, $(curl_PROGRAMS))
|