1#
2#  Watcom / OpenWatcom / Win32 makefile for libcurl.
3#  G. Vanem <gvanem@broadpark.no>
4#
5
6!ifndef %watcom
7!error WATCOM environment variable not set!
8!endif
9
10!ifdef %libname
11LIBNAME = $(%libname)
12!else
13LIBNAME = libcurl
14!endif
15TARGETS = $(LIBNAME).dll $(LIBNAME)_imp.lib $(LIBNAME).lib
16
17CC = wcc386
18LD = wlink
19AR = wlib
20RC = wrc
21
22!ifdef __LOADDLL__
23!  loaddll wcc386  wccd386
24!  loaddll wpp386  wppd386
25!  loaddll wlib    wlibd
26!  if $(__VERSION__) > 1270
27!    loaddll wlink   wlinkd
28!  else
29!    loaddll wlink   wlink
30!  endif
31!endif
32
33!ifdef __LINUX__
34DS = /
35CP = cp
36MD = mkdir -p
37RD = rmdir -p
38RM = rm -f
39!else
40DS = $(X)\$(X)
41CP = copy 2>NUL
42MD = mkdir
43RD = rmdir /q /s 2>NUL
44!if $(__VERSION__) < 1250
45RM = del /q /f 2>NUL
46!else
47RM = rm -f
48!endif
49!endif
50
51SYS_INCL = -I$(%watcom)$(DS)h$(DS)nt -I$(%watcom)$(DS)h
52SYS_LIBS = $(%watcom)$(DS)lib386$(DS)nt;$(%watcom)$(DS)lib386
53
54CFLAGS = -3r -mf -hc -zff -zgf -zq -zm -zc -s -fr=con -w2 -fpi -oilrtfm &
55         -wcd=201 -bt=nt -d+ -dWIN32 -dCURL_WANTS_CA_BUNDLE_ENV         &
56         -dBUILDING_LIBCURL -dHAVE_SPNEGO=1 -I. -I..$(DS)include $(SYS_INCL)
57
58!ifdef %debug
59DEBUG  = -dDEBUG=1 -dDEBUGBUILD
60CFLAGS += -d3 $(DEBUG)
61!else
62CFLAGS += -d0
63!endif
64
65!ifdef %use_ipv6
66CFLAGS += -d_WIN32_WINNT=0x0501 -dENABLE_IPV6
67!endif
68
69!ifdef %use_sspi
70CFLAGS += -dUSE_WINDOWS_SSPI
71!endif
72
73!ifdef %use_winidn
74CFLAGS += -dWINVER=0x0600 -dUSE_WIN32_IDN
75!  if $(__VERSION__) <= 1290
76CFLAGS += -dWANT_IDN_PROTOTYPES
77!  endif
78!endif
79
80#
81# Change to suite.
82#
83!ifdef %zlib_root
84ZLIB_ROOT = $(%zlib_root)
85!else
86ZLIB_ROOT = ..$(DS)..$(DS)zlib-1.2.5
87!endif
88
89!ifdef %libssh2_root
90LIBSSH2_ROOT = $(%libssh2_root)
91!else
92LIBSSH2_ROOT = ..$(DS)..$(DS)libssh2-1.2.8
93!endif
94
95!ifdef %librtmp_root
96LIBRTMP_ROOT = $(%librtmp_root)
97!else
98LIBRTMP_ROOT = ..$(DS)..$(DS)rtmpdump-2.3
99!endif
100
101!ifdef %openssl_root
102OPENSSL_ROOT = $(%openssl_root)
103!else
104OPENSSL_ROOT = ..$(DS)..$(DS)openssl-0.9.8r
105!endif
106
107!ifdef %ares_root
108ARES_ROOT = $(%ares_root)
109!else
110ARES_ROOT = ..$(DS)ares
111!endif
112
113!ifdef %use_zlib
114CFLAGS += -dHAVE_ZLIB_H -dHAVE_LIBZ -I$(ZLIB_ROOT)
115!endif
116
117!ifdef %use_rtmp
118CFLAGS += -dUSE_LIBRTMP -I$(LIBRTMP_ROOT)
119!endif
120
121!ifdef %use_ssh2
122CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H -I$(LIBSSH2_ROOT)$(DS)include -I$(LIBSSH2_ROOT)$(DS)win32
123!endif
124
125!ifdef %use_ssl
126CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I$(OPENSSL_ROOT)$(DS)inc32
127!endif
128
129!ifdef %use_ares
130CFLAGS += -dUSE_ARES -I$(ARES_ROOT)
131!endif
132
133!ifdef %use_watt32
134CFLAGS += -dUSE_WATT32 -I$(%watt_root)$(DS)inc
135!endif
136
137OBJ_BASE = WC_Win32.obj
138LINK_ARG = $(OBJ_BASE)$(DS)dyn$(DS)wlink.arg
139LIB_ARG  = $(OBJ_BASE)$(DS)stat$(DS)wlib.arg
140
141# In order to process Makefile.inc wmake must be called with -u switch!
142!ifndef %MAKEFLAGS
143!error You MUST call wmake with the -u switch!
144!else
145!include Makefile.inc
146!endif
147
148OBJS = $(CSOURCES:.c=.obj)
149!ifdef __LINUX__
150OBJS = $OBJ_DIR/$(OBJS: = $OBJ_DIR/)
151
152!else
153OBJS = $OBJ_DIR\$(OBJS: = $OBJ_DIR\)
154!endif
155
156#
157# Use $(OBJS) as a template to generate $(OBJS_STAT) and $(OBJS_DYN).
158#
159OBJ_DIR    = $(OBJ_BASE)$(DS)stat
160OBJS_STAT  = $+ $(OBJS) $-
161
162OBJ_DIR    = $(OBJ_BASE)$(DS)dyn
163OBJS_DYN   = $+ $(OBJS) $-
164
165CURLBUILDH = ..$(DS)include$(DS)curl$(DS)curlbuild.h
166RESOURCE   = $(OBJ_BASE)$(DS)dyn$(DS)libcurl.res
167
168all: $(CURLBUILDH) $(OBJ_BASE) $(TARGETS) .SYMBOLIC
169	@echo Welcome to libcurl
170
171clean: .SYMBOLIC
172	-$(RM) $(OBJS_STAT)
173	-$(RM) $(OBJS_DYN)
174	-$(RM) $(RESOURCE) $(LINK_ARG) $(LIB_ARG)
175
176vclean distclean: clean .SYMBOLIC
177	-$(RM) $(TARGETS) $(LIBNAME).map $(LIBNAME).sym
178	-$(RD) $(OBJ_BASE)$(DS)stat
179	-$(RD) $(OBJ_BASE)$(DS)dyn
180	-$(RD) $(OBJ_BASE)
181
182$(OBJ_BASE):
183	-$(MD) $^@
184	-$(MD) $^@$(DS)stat
185	-$(MD) $^@$(DS)dyn
186
187$(CURLBUILDH): .EXISTSONLY
188	$(CP) $^@.dist $^@
189
190$(LIBNAME).dll: $(OBJS_DYN) $(RESOURCE) $(LINK_ARG)
191	$(LD) name $^@ @$]@
192
193$(LIBNAME).lib: $(OBJS_STAT) $(LIB_ARG)
194	$(AR) -q -b -c $^@ @$]@
195
196.ERASE
197$(RESOURCE): libcurl.rc
198	$(RC) $(DEBUG) -q -r -zm -bt=nt -I..$(DS)include $(SYS_INCL) $[@ -fo=$^@
199
200.ERASE
201.c{$(OBJ_BASE)$(DS)dyn}.obj:
202	$(CC) $(CFLAGS) -bd -br $[@ -fo=$^@
203
204.ERASE
205.c{$(OBJ_BASE)$(DS)stat}.obj:
206	$(CC) $(CFLAGS) -DCURL_STATICLIB $[@ -fo=$^@
207
208$(LINK_ARG): $(__MAKEFILES__)
209	%create $^@
210	@%append $^@ system nt dll
211	@%append $^@ file { $(OBJS_DYN) }
212!ifdef %debug
213	@%append $^@ debug all
214	@%append $^@ option symfile
215!endif
216	@%append $^@ option quiet, map, caseexact, eliminate, implib=$(LIBNAME)_imp.lib,
217	@%append $^@ res=$(RESOURCE) libpath $(SYS_LIBS)
218	@%append $^@ library wldap32.lib
219!ifdef %use_watt32
220	@%append $^@ library $(%watt_root)$(DS)lib$(DS)wattcpw_imp.lib
221!else
222	@%append $^@ library ws2_32.lib
223!endif
224!ifdef %use_zlib
225	@%append $^@ library $(ZLIB_ROOT)$(DS)zlib.lib
226!endif
227!ifdef %use_rtmp
228	@%append $^@ library $(LIBRTMP_ROOT)$(DS)librtmp$(DS)librtmp.lib
229!endif
230!ifdef %use_ssh2
231	@%append $^@ library $(LIBSSH2_ROOT)$(DS)win32$(DS)libssh2.lib
232!endif
233!ifdef %use_ssl
234	@%append $^@ library $(OPENSSL_ROOT)$(DS)out32$(DS)libeay32.lib, $(OPENSSL_ROOT)$(DS)out32$(DS)ssleay32.lib
235!endif
236!ifdef %use_ares
237	@%append $^@ library $(ARES_ROOT)$(DS)cares.lib
238!endif
239!ifdef %use_winidn
240!  if $(__VERSION__) > 1290
241	@%append $^@ library normaliz.lib
242!  else
243	@%append $^@ import '_IdnToAscii@20' 'NORMALIZ.DLL'.'IdnToAscii'
244	@%append $^@ import '_IdnToUnicode@20' 'NORMALIZ.DLL'.'IdnToUnicode'
245!  endif
246!endif
247
248$(LIB_ARG): $(__MAKEFILES__)
249	%create $^@
250	@for %f in ($(OBJS_STAT)) do @%append $^@ +- %f
251
252