aboutsummaryrefslogtreecommitdiff
path: root/lib/Makefile.m32
blob: 672cc3312d42937de4c3a7d7fc55039a3ef0f146 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#########################################################################
# $Id$
#
## Makefile for building libcurl.a with MingW32 (GCC-3.2) and
## optionally OpenSSL (0.9.8), libssh2 (0.17), zlib (1.2.3)
##
## Usage:
## mingw32-make -f Makefile.m32 [SSL=1] [SSH2=1] [ZLIB=1] [SSPI=1] [IPV6=1] [DYN=1]
##
## Hint: you can also set environment vars to control the build, f.e.:
## set ZLIB_PATH=c:/zlib-1.2.3
## 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.3
endif
# Edit the path below to point to the base of your OpenSSL package.
ifndef OPENSSL_PATH
OPENSSL_PATH = ../../openssl-0.9.8e
endif
# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
LIBSSH2_PATH = ../../libssh2-0.17
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

ARES_LIB = ../ares

CC = gcc
AR = ar
# comment LDFLAGS below to keep debug info
LDFLAGS = -s
RANLIB = ranlib
RC = windres
RCFLAGS = --include-dir=../include -DCURLDEBUG=0 -O COFF -i
RM = del /q /f
STRIP = strip -g

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

INCLUDES = -I. -I../include
CFLAGS = -g -O2 -DBUILDING_LIBCURL
ifdef ARES
  INCLUDES += -I$(ARES_LIB)
  CFLAGS += -DUSE_ARES
  DLL_LIBS += -L$(ARES_LIB) -lcares
  libcurl_dll_DEPENDENCIES = $(ARES_LIB)/libcares.a
endif
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
ifdef LDAPS
  CFLAGS += -DHAVE_LDAP_SSL
  ifdef USE_LDAP_NOVELL
    INCLUDES += -I"$(LDAP_SDK)/inc"
    CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
    DLL_LIBS += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
  endif
endif
DLL_LIBS += -lws2_32 -lwinmm -lwldap32
COMPILE = $(CC) $(INCLUDES) $(CFLAGS)

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

libcurl_dll_LIBRARY = libcurl.dll
libcurl_dll_a_LIBRARY = libcurldll.a
libcurl_a_LIBRARY = libcurl.a

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

RESOURCE = libcurl.res

.SUFFIXES: .rc .res

all: ca-bundle.h $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY)

$(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES)
	-$(RM) $@
	$(AR) cru $@ $(libcurl_a_OBJECTS)
	$(RANLIB) $@
	$(STRIP) $@

# remove the last line above to keep debug info

$(libcurl_dll_LIBRARY): $(libcurl_a_OBJECTS) $(RESOURCE) $(libcurl_dll_DEPENDENCIES)
	-$(RM) $@
	$(CC) $(LDFLAGS) -shared -Wl,--out-implib,$(libcurl_dll_a_LIBRARY) \
	  -o $@ $(libcurl_a_OBJECTS) $(RESOURCE) $(DLL_LIBS)

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

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

clean:
	-$(RM) $(libcurl_a_OBJECTS) $(RESOURCE) ca-bundle.h

distrib: clean
	-$(RM) $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) $(libcurl_dll_a_LIBRARY)

FORCE: ;

ca-bundle.h: FORCE Makefile.m32
	@echo Creating $@
	@echo $(DL)/* Do not edit this file - it is created by make!$(DL) > $@
	@echo $(DL)*/$(DL) >> $@

$(ARES_LIB)/libcares.a:
	$(MAKE) -C $(ARES_LIB) -f Makefile.m32