Vladimir Lazarenko pointed out that we should do some 'mt' magic when
[platform/upstream/curl.git] / src / Makefile.vc6
1 #############################################################\r
2 # $Id: Makefile.vc6,v 1.19 2004/11/14 13:48:15 giva Exp $\r
3 #\r
4 ## Makefile for building curl.exe with MSVC6\r
5 ## Use: nmake -f makefile.vc6 [release | debug] [CFG=release-ssl]\r
6 ##      (default is release)\r
7 ## "nmake -f makefile.vc6 CFG=release-ssl" statically links OpenSSL\r
8 ## into curl.exe producing a standalone SSL-enabled executable.\r
9 ##\r
10 ## Comments to: Troy Engel <tengel@sonic.net>\r
11 ## Updated by: Craig Davison <cd@securityfocus.com>\r
12 ## release-ssl added by Miklos Nemeth <mnemeth@kfkisystems.com>\r
13 ## winmm.lib added by Miklos Nemeth <mnemeth@kfkisystems.com> to\r
14 ## support timeGetTime() in curlutil.c\r
15 #\r
16 #############################################################\r
17 \r
18 PROGRAM_NAME = curl.exe\r
19 \r
20 !IFNDEF ZLIB_PATH\r
21 ZLIB_PATH = ../../zlib-1.2.3\r
22 !ENDIF\r
23 \r
24 !IFNDEF OPENSSL_PATH\r
25 OPENSSL_PATH = ../../openssl-0.9.8e\r
26 !ENDIF\r
27 \r
28 !IFNDEF MACHINE\r
29 MACHINE  = X86\r
30 !ENDIF\r
31 \r
32 # USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication\r
33 # without an openssl installation and offers the ability to authenticate\r
34 # using the "current logged in user". Since at least with MSVC6 the sspi.h\r
35 # header is broken it is either required to install the Windows SDK,\r
36 # or to fix sspi.h with adding this define at the beginning of sspi.h:\r
37 # #define FreeCredentialHandle FreeCredentialsHandle\r
38 #\r
39 # If, for some reason the Windows SDK is installed but not installed\r
40 # in the default location, you can specify WINDOWS_SDK_PATH.\r
41 # It can be downloaded from:\r
42 # http://www.microsoft.com/msdownload/platformsdk/sdkupdate/\r
43 \r
44 # USE_WINDOWS_SSPI = 1\r
45 \r
46 !IFDEF WINDOWS_SSPI\r
47 !IFNDEF WINDOWS_SDK_PATH\r
48 WINDOWS_SDK_PATH = "C:\Program Files\Microsoft SDK"\r
49 !ENDIF\r
50 !ENDIF\r
51 \r
52 ########################################################\r
53 ## Nothing more to do below this line!\r
54 ZLIB_CFLAGS   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
55 ZLIB_LFLAGS   = "/LIBPATH:$(ZLIB_PATH)"\r
56 ZLIB_LIBS     = zlib.lib\r
57 ZLIB_IMP_LIBS = zdll.lib\r
58 \r
59 SSL_CFLAGS     = /DUSE_SSLEAY\r
60 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
61 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
62 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib advapi32.lib\r
63 \r
64 ## Release\r
65 CCR   = cl.exe /MD /O2 /DNDEBUG\r
66 LINKR = link.exe /incremental:no /libpath:"../lib"\r
67 RCR   = rc.exe /dCURLDEBUG=0\r
68 \r
69 ## Debug\r
70 CCD   = cl.exe /MDd /Gm /ZI /Od /D_DEBUG /GZ\r
71 LINKD = link.exe /incremental:yes /debug /libpath:"../lib"\r
72 RCD   = rc.exe /dCURLDEBUG=1\r
73 \r
74 CFLAGS   = /I../lib /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c\r
75 LFLAGS   = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)\r
76 RESFLAGS = /i../include\r
77 \r
78 # This manifest thing is for VC8, enabled by the maketgz script that\r
79 # builds the VC8 version of this makefile. Left commented out in the VC6\r
80 # version!\r
81 #MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1\r
82 \r
83 !IFDEF WINDOWS_SSPI\r
84 CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
85 !ENDIF\r
86 \r
87 RELEASE_OBJS= \\r
88         hugehelpr.obj \\r
89         writeoutr.obj \\r
90         urlglobr.obj \\r
91         getpassr.obj \\r
92         homedirr.obj \\r
93         curlutilr.obj \\r
94         strtoofftr.obj \\r
95         mainr.obj \\r
96         curlr.res\r
97 \r
98 DEBUG_OBJS= \\r
99         hugehelpd.obj \\r
100         writeoutd.obj \\r
101         urlglobd.obj \\r
102         getpassd.obj \\r
103         homedird.obj \\r
104         curlutild.obj \\r
105         strtoofftd.obj \\r
106         maind.obj \\r
107         curld.res\r
108 \r
109 #################################################\r
110 # If CFG not specified, use static libs\r
111 \r
112 CFLAGS         = $(CFLAGS) /DCURL_STATICLIB\r
113 LINKLIBS       = libcurl.lib\r
114 LINKLIBS_DEBUG = libcurld.lib\r
115 \r
116 #################################################\r
117 # release dynamic library\r
118 \r
119 !IF "$(CFG)" == "release-dll"\r
120 LINKLIBS       = libcurl_imp.lib\r
121 LINKLIBS_DEBUG = libcurld_imp.lib\r
122 !ENDIF\r
123 \r
124 #################################################\r
125 # release static library with zlib\r
126 \r
127 !IF "$(CFG)" == "release-zlib"\r
128 CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
129 LINKLIBS       = libcurl.lib  $(ZLIB_LIBS)\r
130 LINKLIBS_DEBUG = libcurld.lib $(ZLIB_LIBS)\r
131 LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
132 !ENDIF\r
133 \r
134 #################################################\r
135 # release static library with ssl\r
136 \r
137 !IF "$(CFG)" == "release-ssl"\r
138 CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
139 LINKLIBS       = libcurl.lib  $(SSL_LIBS)\r
140 LINKLIBS_DEBUG = libcurld.lib $(SSL_LIBS)\r
141 LFLAGS         = $(LFLAGS) $(SSL_LFLAGS)\r
142 !ENDIF\r
143 \r
144 #################################################\r
145 # release dynamic library with dynamic ssl\r
146 \r
147 !IF "$(CFG)" == "release-dll-ssl-dll"\r
148 CFLAGS         = $(CFLAGS) $(SSL_CFLAGS)\r
149 LINKLIBS       = libcurl_imp.lib  $(SSL_LIBS)\r
150 LINKLIBS_DEBUG = libcurld_imp.lib $(SSL_LIBS)\r
151 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
152 !ENDIF\r
153 \r
154 #################################################\r
155 # release static library with ssl and zlib\r
156 \r
157 !IF "$(CFG)" == "release-ssl-zlib"\r
158 CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
159 LINKLIBS       = libcurl.lib  $(SSL_LIBS) $(ZLIB_LIBS)\r
160 LINKLIBS_DEBUG = libcurld.lib $(SSL_LIBS) $(ZLIB_LIBS)\r
161 LFLAGS         = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)\r
162 !ENDIF\r
163 \r
164 #################################################\r
165 # release static library with dynamic ssl\r
166 \r
167 !IF "$(CFG)" == "release-ssl-dll"\r
168 CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
169 LINKLIBS       = libcurl.lib  $(SSL_LIBS)\r
170 LINKLIBS_DEBUG = libcurld.lib $(SSL_LIBS)\r
171 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
172 !ENDIF\r
173 \r
174 #################################################\r
175 # release static library with dynamic zlib\r
176 \r
177 !IF "$(CFG)" == "release-zlib-dll"\r
178 CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
179 LINKLIBS       = libcurl.lib  $(ZLIB_IMP_LIBS)\r
180 LINKLIBS_DEBUG = libcurld.lib $(ZLIB_IMP_LIBS)\r
181 LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
182 !ENDIF\r
183 \r
184 #################################################\r
185 # release dynamic library with dynamic zlib\r
186 \r
187 !IF "$(CFG)" == "release-dll-zlib-dll"\r
188 CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS)\r
189 LINKLIBS       = libcurl_imp.lib  $(ZLIB_IMP_LIBS)\r
190 LINKLIBS_DEBUG = libcurld_imp.lib $(ZLIB_IMP_LIBS)\r
191 LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
192 !ENDIF\r
193 \r
194 #################################################\r
195 # release static library with dynamic ssl and dynamic zlib\r
196 \r
197 !IF "$(CFG)" == "release-ssl-dll-zlib-dll"\r
198 CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
199 LINKLIBS       = libcurl.lib  $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
200 LINKLIBS_DEBUG = libcurld.lib $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
201 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
202 !ENDIF\r
203 \r
204 #################################################\r
205 # release dynamic library with dynamic ssl and dynamic zlib\r
206 \r
207 !IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"\r
208 CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)\r
209 LINKLIBS       = libcurl_imp.lib  $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
210 LINKLIBS_DEBUG = libcurld_imp.lib $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
211 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
212 !ENDIF\r
213 \r
214 \r
215 LINKLIBS       = $(LINKLIBS) wsock32.lib wldap32.lib winmm.lib\r
216 LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) wsock32.lib wldap32.lib winmm.lib\r
217 \r
218 all : release\r
219 \r
220 release: $(RELEASE_OBJS)\r
221         $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)\r
222         $(MANIFESTTOOL)\r
223 \r
224 debug: $(DEBUG_OBJS)\r
225         $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)\r
226         $(MANIFESTTOOL)\r
227 \r
228 ## Release\r
229 hugehelpr.obj: hugehelp.c\r
230         $(CCR) $(CFLAGS) /Zm200 /Fo"$@" hugehelp.c\r
231 writeoutr.obj: writeout.c\r
232         $(CCR) $(CFLAGS) /Fo"$@" writeout.c\r
233 urlglobr.obj: urlglob.c\r
234         $(CCR) $(CFLAGS) /Fo"$@" urlglob.c\r
235 getpassr.obj: getpass.c\r
236         $(CCR) $(CFLAGS) /Fo"$@" getpass.c\r
237 homedirr.obj: homedir.c\r
238         $(CCR) $(CFLAGS) /Fo"$@" homedir.c\r
239 curlutilr.obj: curlutil.c\r
240         $(CCR) $(CFLAGS) /Fo"$@" curlutil.c\r
241 strtoofftr.obj: ../lib/strtoofft.c\r
242         $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
243 mainr.obj: main.c\r
244         $(CCR) $(CFLAGS) /Fo"$@" main.c\r
245 curlr.res : curl.rc\r
246         $(RCR) $(RESFLAGS) /Fo"$@" curl.rc\r
247 \r
248 ## Debug\r
249 hugehelpd.obj: hugehelp.c\r
250         $(CCD) $(CFLAGS) /Zm200 /Fo"$@" hugehelp.c\r
251 writeoutd.obj: writeout.c\r
252         $(CCD) $(CFLAGS) /Fo"$@" writeout.c\r
253 urlglobd.obj: urlglob.c\r
254         $(CCD) $(CFLAGS) /Fo"$@" urlglob.c\r
255 getpassd.obj: getpass.c\r
256         $(CCD) $(CFLAGS) /Fo"$@" getpass.c\r
257 homedird.obj: homedir.c\r
258         $(CCD) $(CFLAGS) /Fo"$@" homedir.c\r
259 curlutild.obj: curlutil.c\r
260         $(CCD) $(CFLAGS) /Fo"$@" curlutil.c\r
261 strtoofftd.obj: ../lib/strtoofft.c\r
262         $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
263 maind.obj: main.c\r
264         $(CCD) $(CFLAGS) /Fo"$@" main.c\r
265 curld.res : curl.rc\r
266         $(RCD) $(RESFLAGS) /Fo"$@" curl.rc\r
267 \r
268 clean:\r
269         @-erase $(PROGRAM_NAME) 2> NUL\r
270         @-erase $(RELEASE_OBJS) 2> NUL\r
271         @-erase $(DEBUG_OBJS) 2> NUL\r
272         @-erase *.idb 2> NUL\r
273         @-erase *.pdb 2> NUL\r
274         @-erase *.pch 2> NUL\r
275         @-erase *.ilk 2> NUL\r