• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#***************************************************************************
2#                                  _   _ ____  _
3#  Project                     ___| | | |  _ \| |
4#                             / __| | | | |_) | |
5#                            | (__| |_| |  _ <| |___
6#                             \___|\___/|_| \_\_____|
7#
8# Copyright (C) 1999 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
9#
10# This software is licensed as described in the file COPYING, which
11# you should have received as part of this distribution. The terms
12# are also available at https://curl.haxx.se/docs/copyright.html.
13#
14# You may opt to use, copy, modify, merge, publish, distribute and/or sell
15# copies of the Software, and permit persons to whom the Software is
16# furnished to do so, under the terms of the COPYING file.
17#
18# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19# KIND, either express or implied.
20#
21#***************************************************************************
22
23###########################################################################
24#
25# Makefile for building libcurl with MSVC 6 through to 15
26#
27# Usage: see usage message below
28#        Should be invoked from winbuild directory
29#        Edit the paths and desired library name
30#        SSL path is only required if you intend compiling
31#        with SSL.
32#
33# This make file leaves the result either a .lib or .dll file
34# in the \lib directory. It should be called from the \lib
35# directory.
36#
37# An option would have been to allow the source directory to
38# be specified, but I saw no requirement.
39#
40# Another option would have been to leave the .lib and .dll
41# files in the "cfg" directory, but then the make file
42# in \src would need to be changed.
43#
44##############################################################
45
46CFGSET=FALSE
47WINBUILD_DIR=`cd`
48ZIP        = zip.exe
49
50# Allow changing C compiler via environment variable CC (default cl.exe)
51# This command macro is not set by default: https://msdn.microsoft.com/en-us/library/ms933742.aspx
52!If "$(CC)" == ""
53CC = cl.exe
54!Endif
55
56!IF "$(VC)"=="6"
57CC_NODEBUG  = $(CC) /O2 /DNDEBUG
58CC_DEBUG    = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
59CFLAGS      = /I. /I../lib /I../include /nologo /W4 /wd4127 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL
60!ELSE
61CC_NODEBUG  = $(CC) /O2 /DNDEBUG
62CC_DEBUG    = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd
63CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /wd4127 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL
64!ENDIF
65
66LFLAGS     = /nologo /machine:$(MACHINE)
67LNKDLL     = link.exe /DLL
68LNKLIB     = link.exe /lib
69
70CFLAGS_PDB = /Zi
71LFLAGS_PDB = /incremental:no /opt:ref,icf
72
73CFLAGS_LIBCURL_STATIC  = /DCURL_STATICLIB
74
75WIN_LIBS    = ws2_32.lib wldap32.lib advapi32.lib
76
77BASE_NAME              = libcurl
78BASE_NAME_DEBUG        = $(BASE_NAME)_debug
79BASE_NAME_STATIC       = $(BASE_NAME)_a
80BASE_NAME_STATIC_DEBUG = $(BASE_NAME_STATIC)_debug
81
82LIB_NAME_STATIC        = $(BASE_NAME_STATIC).lib
83LIB_NAME_STATIC_DEBUG  = $(BASE_NAME_STATIC_DEBUG).lib
84LIB_NAME_DLL           = $(BASE_NAME).dll
85LIB_NAME_IMP           = $(BASE_NAME).lib
86LIB_NAME_DLL_DEBUG     = $(BASE_NAME_DEBUG).dll
87LIB_NAME_IMP_DEBUG     = $(BASE_NAME_DEBUG).lib
88
89PDB_NAME_STATIC        = $(BASE_NAME_STATIC).pdb
90PDB_NAME_STATIC_DEBUG  = $(BASE_NAME_STATIC_DEBUG).pdb
91PDB_NAME_DLL           = $(BASE_NAME).pdb
92PDB_NAME_DLL_DEBUG     = $(BASE_NAME_DEBUG).pdb
93
94# CURL Command section
95PROGRAM_NAME = curl.exe
96CURL_CFLAGS   =  /I../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c
97CURL_LFLAGS   = /nologo /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)
98CURL_RESFLAGS = /i../include
99
100#############################################################
101## Nothing more to do below this line!
102LIBCURL_SRC_DIR = ..\lib
103CURL_SRC_DIR = ..\src
104
105!IFNDEF WITH_DEVEL
106WITH_DEVEL          = ../../deps
107!ENDIF
108DEVEL_INCLUDE  = $(WITH_DEVEL)/include
109DEVEL_LIB      = $(WITH_DEVEL)/lib
110DEVEL_BIN      = $(WITH_DEVEL)/bin
111
112CFLAGS         = $(CFLAGS) /I"$(DEVEL_INCLUDE)"
113LFLAGS         = $(LFLAGS) "/LIBPATH:$(DEVEL_LIB)"
114
115
116!IF "$(WITH_SSL)"=="dll"
117!IF EXISTS("$(DEVEL_LIB)\libssl.lib")
118SSL_LIBS     = libssl.lib libcrypto.lib
119!ELSE
120SSL_LIBS     = libeay32.lib ssleay32.lib
121!ENDIF
122USE_SSL      = true
123SSL          = dll
124!ELSEIF "$(WITH_SSL)"=="static"
125!IF EXISTS("$(DEVEL_LIB)\libssl.lib")
126SSL_LIBS     = libssl.lib libcrypto.lib gdi32.lib user32.lib crypt32.lib
127!ELSE
128SSL_LIBS     = libeay32.lib ssleay32.lib gdi32.lib user32.lib crypt32.lib
129!ENDIF
130USE_SSL      = true
131SSL          = static
132!ENDIF
133
134!IFDEF USE_SSL
135SSL_CFLAGS   = /DUSE_OPENSSL /I"$(DEVEL_INCLUDE)/openssl"
136!IF EXISTS("$(DEVEL_INCLUDE)\openssl\is_boringssl.h")
137SSL_CFLAGS   = $(SSL_CFLAGS) /DHAVE_BORINGSSL
138!ENDIF
139!ENDIF
140
141!IF "$(WITH_NGHTTP2)"=="dll"
142NGHTTP2_CFLAGS   = /DUSE_NGHTTP2
143NGHTTP2_LIBS     = nghttp2.lib
144!ELSEIF "$(WITH_NGHTTP2)"=="static"
145NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /DNGHTTP2_STATICLIB
146NGHTTP2_LIBS     = nghttp2_static.lib
147!ENDIF
148
149!IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"
150USE_MBEDTLS    = true
151MBEDTLS        = $(WITH_MBEDTLS)
152MBEDTLS_CFLAGS = /DUSE_MBEDTLS
153MBEDTLS_LIBS   = mbedtls.lib mbedcrypto.lib mbedx509.lib
154!ENDIF
155
156
157!IF "$(WITH_CARES)"=="dll"
158!IF "$(DEBUG)"=="yes"
159CARES_LIBS     = caresd.lib
160!ELSE
161CARES_LIBS     = cares.lib
162!ENDIF
163USE_CARES      = true
164CARES          = dll
165!ELSEIF "$(WITH_CARES)"=="static"
166!IF "$(DEBUG)"=="yes"
167CARES_LIBS     = libcaresd.lib
168!ELSE
169CARES_LIBS     = libcares.lib
170!ENDIF
171USE_CARES      = true
172CARES          = static
173!ENDIF
174
175!IFDEF USE_CARES
176CARES_CFLAGS   = /DUSE_ARES /I"$(DEVEL_INCLUDE)/cares"
177!ENDIF
178
179!IF "$(WITH_ZLIB)"=="dll"
180ZLIB_LIBS   = zlib.lib
181USE_ZLIB    = true
182ZLIB        = dll
183!ELSEIF "$(WITH_ZLIB)"=="static"
184ZLIB_LIBS   = zlib_a.lib
185USE_ZLIB    = true
186ZLIB        = static
187!ENDIF
188
189!IFDEF USE_ZLIB
190ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ
191!ENDIF
192
193
194!IF "$(WITH_SSH2)"=="dll"
195SSH2_LIBS   = libssh2.lib
196USE_SSH2    = true
197SSH2        = dll
198!ELSEIF "$(WITH_SSH2)"=="static"
199SSH2_LIBS   = libssh2_a.lib user32.lib
200USE_SSH2    = true
201SSH2        = static
202!ENDIF
203
204!IFDEF USE_SSH2
205SSH2_CFLAGS = /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /DUSE_LIBSSH2
206SSH2_CFLAGS = $(SSH2_CFLAGS) /I$(WITH_DEVEL)/include/libssh2
207!ENDIF
208
209
210!IFNDEF USE_IDN
211USE_IDN   = true
212!ELSEIF "$(USE_IDN)"=="yes"
213USE_IDN   = true
214!ENDIF
215
216!IF "$(USE_IDN)"=="true"
217IDN_CFLAGS = $(IDN_CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES
218WIN_LIBS   = $(WIN_LIBS) Normaliz.lib
219!ENDIF
220
221
222!IFNDEF USE_IPV6
223USE_IPV6  = true
224!ELSEIF "$(USE_IPV6)"=="yes"
225USE_IPV6  = true
226!ENDIF
227
228!IF "$(USE_IPV6)"=="true"
229IPV6_CFLAGS = $(IPV6_CFLAGS) /DUSE_IPV6
230!ENDIF
231
232
233!IFNDEF USE_SSPI
234USE_SSPI  = true
235!ELSEIF "$(USE_SSPI)"=="yes"
236USE_SSPI  = true
237!ENDIF
238
239!IF "$(USE_SSPI)"=="true"
240SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_WINDOWS_SSPI
241!ENDIF
242
243
244!IFNDEF USE_WINSSL
245!IF "$(USE_SSL)"=="true"
246USE_WINSSL  = false
247!ELSE
248USE_WINSSL  = $(USE_SSPI)
249!ENDIF
250!ELSEIF "$(USE_WINSSL)"=="yes"
251USE_WINSSL  = true
252!ENDIF
253
254
255!IF "$(USE_WINSSL)"=="true"
256!IF "$(USE_SSPI)"!="true"
257!ERROR cannot build with WinSSL without SSPI
258!ENDIF
259SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_SCHANNEL
260WIN_LIBS    = $(WIN_LIBS) Crypt32.lib
261!ENDIF
262
263
264!IF "$(GEN_PDB)"=="yes"
265GEN_PDB = true
266!ENDIF
267
268
269!IFDEF EMBED_MANIFEST
270MANIFESTTOOL = mt -manifest $(DIRDIST)\bin\$(PROGRAM_NAME).manifest -outputresource:$(DIRDIST)\bin\$(PROGRAM_NAME);1
271!ENDIF
272
273# Runtime library configuration
274!IF "$(RTLIBCFG)"=="static"
275RTLIB = /MT
276RTLIB_DEBUG = /MTd
277!ELSE
278RTLIB = /MD
279RTLIB_DEBUG  = /MDd
280!ENDIF
281
282!IF "$(MODE)"=="static"
283TARGET = $(LIB_NAME_STATIC)
284CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)
285AS_DLL = false
286CFGSET = true
287!ELSEIF "$(MODE)"=="dll"
288TARGET = $(LIB_NAME_DLL)
289CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)
290AS_DLL = true
291CFGSET = true
292!ENDIF
293
294!IF "$(CFGSET)" == "FALSE"
295!ERROR please choose a valid mode
296!ENDIF
297
298
299
300# CURL_XX macros are for the curl.exe command
301
302!IF "$(DEBUG)"=="yes"
303RC_FLAGS = /dDEBUGBUILD=1 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
304CURL_CC       = $(CC_DEBUG) $(RTLIB_DEBUG)
305CURL_RC_FLAGS = /i../include /dDEBUGBUILD=1 /Fo $@ $(CURL_SRC_DIR)\curl.rc
306!ELSE
307RC_FLAGS = /dDEBUGBUILD=0 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
308CURL_CC       = $(CC_NODEBUG) $(RTLIB)
309CURL_RC_FLAGS = /i../include /dDEBUGBUILD=0 /Fo $@ $(CURL_SRC_DIR)\curl.rc
310!ENDIF
311
312!IF "$(AS_DLL)" == "true"
313
314LNK       = $(LNKDLL) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)
315!IF "$(DEBUG)"=="yes"
316TARGET    = $(LIB_NAME_DLL_DEBUG)
317LNK       = $(LNK) /DEBUG /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)
318PDB       = $(PDB_NAME_DLL_DEBUG)
319CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)
320!ELSE
321TARGET    = $(LIB_NAME_DLL)
322LNK       = $(LNK)  /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)
323PDB       = $(PDB_NAME_DLL)
324CURL_LIBS = /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP)
325!ENDIF
326RESOURCE  = $(LIB_DIROBJ)\libcurl.res
327
328# AS_DLL
329!ELSE
330
331!IF "$(DEBUG)"=="yes"
332TARGET   = $(LIB_NAME_STATIC_DEBUG)
333PDB      = $(PDB_NAME_STATIC_DEBUG)
334!ELSE
335TARGET   = $(LIB_NAME_STATIC)
336PDB      = $(PDB_NAME_STATIC)
337!ENDIF
338LNK      = $(LNKLIB) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)
339CURL_CC  = $(CURL_CC) $(CFLAGS_LIBCURL_STATIC)
340
341# AS_DLL
342!ENDIF
343
344!IF "$(USE_SSL)"=="true"
345CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
346LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(SSL_LIBS)
347!ENDIF
348
349!IF "$(USE_MBEDTLS)"=="true"
350CFLAGS = $(CFLAGS) $(MBEDTLS_CFLAGS)
351LFLAGS = $(LFLAGS) $(MBEDTLS_LFLAGS) $(MBEDTLS_LIBS)
352!ENDIF
353
354!IF "$(USE_CARES)"=="true"
355CFLAGS = $(CFLAGS) $(CARES_CFLAGS)
356LFLAGS = $(LFLAGS) $(CARES_LFLAGS) $(CARES_LIBS)
357!ENDIF
358
359!IF "$(USE_ZLIB)"=="true"
360CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)
361LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) $(ZLIB_LIBS)
362!ENDIF
363
364!IF "$(USE_SSH2)"=="true"
365CFLAGS = $(CFLAGS) $(SSH2_CFLAGS)
366LFLAGS = $(LFLAGS) $(SSH2_LFLAGS) $(SSH2_LIBS)
367!ENDIF
368
369!IF "$(USE_IDN)"=="true"
370CFLAGS = $(CFLAGS) $(IDN_CFLAGS)
371!ENDIF
372
373!IF "$(USE_IPV6)"=="true"
374CFLAGS = $(CFLAGS) $(IPV6_CFLAGS)
375!ENDIF
376
377!IF "$(USE_SSPI)"=="true"
378CFLAGS = $(CFLAGS) $(SSPI_CFLAGS)
379!ENDIF
380
381!IF "$(USE_NGHTTP2)"=="true"
382CFLAGS = $(CFLAGS) $(NGHTTP2_CFLAGS)
383LFLAGS = $(LFLAGS) $(NGHTTP2_LFLAGS) $(NGHTTP2_LIBS)
384!ENDIF
385
386!IF "$(GEN_PDB)"=="true"
387CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)"
388LFLAGS = $(LFLAGS) $(LFLAGS_PDB)
389!ENDIF
390
391LIB_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib
392CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl
393DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\
394
395#
396# curl.exe
397#
398CURL_LINK = link.exe /incremental:no /libpath:"$(DIRDIST)\lib"
399
400#!IF "$(CFG)" == "release-ssh2-ssl-dll-zlib"
401#TARGET   = $(LIB_NAME_STATIC)
402#LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBS)  $(SSH2LIBS) $(SSL_LFLAGS) $(ZLIB_LFLAGS) $(LFLAGSSSH) /out:$(LIB_DIROBJ)\$(TARGET)
403#CC       = $(CCNODBG) $(RTLIB) $(SSL_CFLAGS) $(ZLIB_CFLAGS) $(CFLAGSLIB)  $(SSH2_CFLAGS)
404#CFGSET   = TRUE
405#!ENDIF
406
407#######################
408# Only the clean target can be used if a config was not provided.
409#
410!IF "$(CFGSET)" == "FALSE"
411clean:
412	@-erase /s *.dll 2> NUL
413	@-erase /s *.exp 2> NUL
414	@-erase /s *.idb 2> NUL
415	@-erase /s *.lib 2> NUL
416	@-erase /s *.obj 2> NUL
417	@-erase /s *.pch 2> NUL
418	@-erase /s *.pdb 2> NUL
419	@-erase /s *.res 2> NUL
420!ELSE
421# A mode was provided, so the library can be built.
422#
423!include CURL_OBJS.inc
424!include LIBCURL_OBJS.inc
425
426!IF "$(AS_DLL)" == "true"
427LIB_OBJS = $(LIBCURL_OBJS) $(RESOURCE)
428!ELSE
429LIB_OBJS = $(LIBCURL_OBJS)
430!ENDIF
431
432EXE_OBJS = $(CURL_OBJS) $(CURL_DIROBJ)\curl.res
433
434all : $(TARGET) $(PROGRAM_NAME)
435
436package: $(TARGET)
437	@cd $(DIRDIST)
438	@-$(ZIP) -9 -q -r ..\$(CONFIG_NAME_LIB).zip .>nul 2<&1
439	@cd $(MAKEDIR)
440
441$(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DISTDIR)
442	@echo Using SSL: $(USE_SSL)
443	@echo Using NGHTTP2: $(USE_NGHTTP2)
444	@echo Using c-ares: $(USE_CARES)
445	@echo Using SSH2: $(USE_SSH2)
446	@echo Using ZLIB: $(USE_ZLIB)
447	@echo Using IDN:  $(USE_IDN)
448	@echo Using IPv6: $(USE_IPV6)
449	@echo Using SSPI: $(USE_SSPI)
450	@echo Using WinSSL: $(USE_WINSSL)
451	@echo CFLAGS:     $(CFLAGS)
452	@echo LFLAGS:     $(LFLAGS)
453	@echo GenPDB:     $(GEN_PDB)
454	@echo Debug:      $(DEBUG)
455	@echo Machine:    $(MACHINE)
456	$(LNK) $(LFLAGS) $(LIB_OBJS)
457	@echo Copying libs...
458	@if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL)       $(DIRDIST)\bin\ /y >nul 2<&1
459	@if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC)    $(DIRDIST)\lib\ /y >nul 2<&1
460	@if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL_DEBUG) $(DIRDIST)\bin\ /y >nul 2<&1
461	@if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC_DEBUG) $(DIRDIST)\lib\ /y >nul 2<&1
462	@if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP)       $(DIRDIST)\lib\ /y >nul 2<&1
463	@if exist $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) copy $(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG) $(DIRDIST)\lib >nul 2<&1
464	@-copy $(LIB_DIROBJ)\*.exp                 $(DIRDIST)\lib /y >nul 2<&1
465	@-copy $(LIB_DIROBJ)\*.pdb                 $(DIRDIST)\lib /y >nul 2<&1
466	@-copy ..\include\curl\*.h   $(DIRDIST)\include\curl\ /y  >nul 2<&1
467
468$(LIB_OBJS): $(LIB_DIROBJ) $(DIRDIST)
469
470$(DIRDIST):
471	@if not exist "$(DIRDIST)\bin" mkdir $(DIRDIST)\bin
472	@if not exist "$(DIRDIST)\include" mkdir $(DIRDIST)\include
473	@if not exist "$(DIRDIST)\include\curl" mkdir $(DIRDIST)\include\curl
474	@if not exist "$(DIRDIST)\lib" mkdir $(DIRDIST)\lib
475
476$(LIB_DIROBJ):
477	@if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)
478	@if not exist "$(LIB_DIROBJ)\vauth" mkdir $(LIB_DIROBJ)\vauth
479	@if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls
480
481$(CURL_DIROBJ):
482	@if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)
483# we need a lib dir for the portability functions from libcurl
484# we use the .c directly here
485	@if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)\lib
486
487.SUFFIXES: .c .obj .res
488
489{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj:
490	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<
491
492{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj:
493	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<
494
495{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj:
496	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<
497
498$(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc
499	rc $(RC_FLAGS)
500
501#
502# curl.exe
503#
504
505
506!IF "$(MODE)"=="static"
507!IF "$(DEBUG)"=="yes"
508CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC_DEBUG)
509!ELSE
510CURL_LIBCURL_LIBNAME=$(LIB_NAME_STATIC)
511!ENDIF
512!ELSEIF "$(MODE)"=="dll"
513!IF "$(DEBUG)"=="yes"
514CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP_DEBUG)
515!ELSE
516CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)
517!ENDIF
518!ENDIF
519
520CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \
521 $(CURL_DIROBJ)\nonblock.obj \
522 $(CURL_DIROBJ)\strtoofft.obj \
523 $(CURL_DIROBJ)\warnless.obj
524
525$(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
526	$(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
527	$(MANIFESTTOOL)
528
529{$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj:
530	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@"  $<
531
532$(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c
533	$(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c
534$(CURL_DIROBJ)\nonblock.obj: ../lib/nonblock.c
535	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/nonblock.c
536$(CURL_DIROBJ)\strtoofft.obj: ../lib/strtoofft.c
537	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strtoofft.c
538$(CURL_DIROBJ)\warnless.obj: ../lib/warnless.c
539	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/warnless.c
540$(CURL_DIROBJ)\curl.res: $(CURL_SRC_DIR)\curl.rc
541	rc $(CURL_RC_FLAGS)
542
543!ENDIF  # End of case where a config was provided.
544