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