Makefile.msvc (16429B)
1 2 # Copyright (C) 2009-2013 by Daniel Stenberg 3 # 4 # Permission is hereby granted, free of charge, to any person obtaining a copy 5 # of this software and associated documentation files (the "Software"), to deal 6 # in the Software without restriction, including without limitation the rights 7 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 # copies of the Software, and to permit persons to whom the Software is 9 # furnished to do so, subject to the following conditions: 10 # 11 # The above copyright notice and this permission notice (including the next 12 # paragraph) shall be included in all copies or substantial portions of the 13 # Software. 14 # 15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 # SOFTWARE. 22 # 23 # SPDX-License-Identifier: MIT 24 25 # ------------------------------------------------------------------------------ 26 # 27 # Makefile for building c-ares libraries and sample programs with MSVC. 28 # 29 # Usage: nmake /f makefile.msvc CFG=<config> <target> 30 # 31 # <config> must be one of: [ lib-release | lib-debug | dll-release | dll-debug } 32 # <target> must be one of: [ ALL | c-ares | adig | ahost | clean } 33 # 34 # If a <target> other than ALL or clean is given, <config> becomes mandatory. 35 # 36 # If neither <config> nor <target> are specified this results in 37 # all targets being built for all <config> c-ares library types. 38 # 39 # This makefile must be processed from the subdir where it is located. 40 # 41 # All results are generated below a subdirectory named msvcXXX. 42 # 43 # ------------------------------------------------------------------------------ 44 45 NAME = cares 46 47 # ------------------------------------------------ 48 # c-ares static and dynamic libraries common base 49 # file names for release and debug configurations 50 # ------------------------------------------------ 51 52 STA_LIB_REL = lib$(NAME) 53 DYN_LIB_REL = $(NAME) 54 STA_LIB_DBG = $(STA_LIB_REL)d 55 DYN_LIB_DBG = $(DYN_LIB_REL)d 56 57 # ------------------------------------------- 58 # Base names for c-ares DLL import libraries 59 # ------------------------------------------- 60 61 IMP_LIB_REL = $(DYN_LIB_REL) 62 IMP_LIB_DBG = $(DYN_LIB_DBG) 63 64 # -------------------------- 65 # Runtime library selection 66 # -------------------------- 67 68 RTLIB = /MD 69 RTLIBD = /MDd 70 71 !IF "$(RTLIBCFG)" == "static" 72 RTLIB = /MT 73 RTLIBD = /MTd 74 !ENDIF 75 76 # -------------------------------------------------------- 77 # Define USE_WATT32 to 1 to use the Watt-32 tcp/ip stack, 78 # otherwise Winsock tcp/ip stack will be used as default. 79 # -------------------------------------------------------- 80 81 !IFNDEF USE_WATT32 82 USE_WATT32 = 0 83 !ENDIF 84 85 # ---------------------------------------------------- 86 # Verify that current subdir is the c-ares source one 87 # ---------------------------------------------------- 88 89 !IF ! EXIST(.\src\lib\ares_init.c) 90 ! MESSAGE Can not process Makefile.msvc from outside of c-ares source subdirectory. 91 ! MESSAGE Change to the subdirectory where Makefile.msvc is found, and try again. 92 ! ERROR See previous message. 93 !ENDIF 94 95 # ------------------------------------------------------------------ 96 # Base subdir is the common root from which other subdirs will hang. 97 # ------------------------------------------------------------------ 98 99 BASE_DIR = .\msvc 100 101 # ---------------------------------------- 102 # Subdir holding sources for all projects 103 # ---------------------------------------- 104 105 SRCDIR = . 106 107 # ----------------------------- 108 # Default installation subdirs 109 # ----------------------------- 110 111 !IFNDEF INSTALL_DIR 112 INSTALL_DIR = . 113 !ENDIF 114 115 !IFNDEF INSTALL_DIR_LIB 116 INSTALL_DIR_LIB = $(INSTALL_DIR)\lib 117 !ENDIF 118 119 !IFNDEF INSTALL_DIR_INC 120 INSTALL_DIR_INC = $(INSTALL_DIR)\include 121 !ENDIF 122 123 # ------------------------- 124 # Configuration validation 125 # ------------------------- 126 127 VALID_CFGSET = FALSE 128 !IF "$(CFG)" == "lib-release" || "$(CFG)" == "lib-debug" || \ 129 "$(CFG)" == "dll-release" || "$(CFG)" == "dll-debug" 130 VALID_CFGSET = TRUE 131 !ENDIF 132 133 !IF "$(VALID_CFGSET)" == "FALSE" && "$(CFG)" != "" 134 ! MESSAGE MSVC c-ares makefile 135 ! MESSAGE 136 ! MESSAGE Usage: nmake /f makefile.msvc CFG=<config> <target> 137 ! MESSAGE 138 ! MESSAGE <config> must be one of: [ lib-release | lib-debug | dll-release | dll-debug } 139 ! MESSAGE <target> must be one of: [ ALL | c-ares | adig | ahost | clean } 140 ! MESSAGE 141 ! MESSAGE If a <target> other than ALL or clean is given, <config> becomes mandatory. 142 ! MESSAGE 143 ! MESSAGE If neither <config> nor <target> are specified this results in 144 ! MESSAGE all targets being built for all <config> c-ares library types. 145 ! MESSAGE 146 ! ERROR Choose a valid configuration. 147 !ENDIF 148 149 # -------------------------------------------------------- 150 # Project subdirs independent of configuration being used 151 # -------------------------------------------------------- 152 153 CARES_DIR = $(BASE_DIR)\cares 154 PROG2_DIR = $(BASE_DIR)\adig 155 PROG3_DIR = $(BASE_DIR)\ahost 156 157 # --------------------------------------------------- 158 # Subdirs which are configuration dependent are only 159 # defined when a valid configuration has been given. 160 # --------------------------------------------------- 161 162 !IF "$(VALID_CFGSET)" == "TRUE" 163 CARES_OUTDIR = $(CARES_DIR)\$(CFG) 164 PROG2_OUTDIR = $(PROG2_DIR)\$(CFG) 165 PROG3_OUTDIR = $(PROG3_DIR)\$(CFG) 166 CARES_OBJDIR = $(CARES_OUTDIR)\obj 167 PROG2_OBJDIR = $(PROG2_OUTDIR)\obj 168 PROG3_OBJDIR = $(PROG3_OUTDIR)\obj 169 !ELSE 170 !UNDEF CARES_OUTDIR 171 !UNDEF PROG2_OUTDIR 172 !UNDEF PROG3_OUTDIR 173 !UNDEF CARES_OBJDIR 174 !UNDEF PROG2_OBJDIR 175 !UNDEF PROG3_OBJDIR 176 !ENDIF 177 178 # ------------------------------------- 179 # Settings that depend on tcp/ip stack 180 # ------------------------------------- 181 182 !IF "$(USE_WATT32)" == "1" 183 CFLAGS = /D_WIN32_WINNT=0x0602 /DWATT32 /I$(WATT_ROOT)\inc 184 ! IFNDEF PLATFORM 185 PLATFORM = x86 186 ! ENDIF 187 EX_LIBS_REL = $(WATT_ROOT)\lib\$(PLATFORM)\wattcpvc_imp.lib advapi32.lib 188 EX_LIBS_DBG = $(WATT_ROOT)\lib\$(PLATFORM)\wattcpvc_imp_d.lib advapi32.lib 189 !ELSE 190 CFLAGS = /D_WIN32_WINNT=0x0602 191 EX_LIBS_REL = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib 192 EX_LIBS_DBG = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib 193 !ENDIF 194 195 196 # ---------------------------- 197 # Assorted commands and flags 198 # ---------------------------- 199 200 CC_CMD_REL = cl.exe /nologo $(RTLIB) /DNDEBUG /O2 201 CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi /RTCsu 202 CC_CFLAGS = $(CFLAGS) /D_REENTRANT /I.\src\lib /I.\include /I.\src\lib\include /W3 /EHsc /FD 203 204 RC_CMD_REL = rc.exe /l 0x409 /d "NDEBUG" 205 RC_CMD_DBG = rc.exe /l 0x409 /d "_DEBUG" 206 207 LINK_CMD_LIB = link.exe /lib /nologo 208 LINK_CMD_DLL = link.exe /dll /nologo /incremental:no /fixed:no 209 LINK_CMD_EXE = link.exe /nologo /incremental:no /fixed:no /subsystem:console 210 211 LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release 212 LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug 213 214 # --------------------------------- 215 # Configuration dependent settings 216 # --------------------------------- 217 218 !IF "$(CFG)" == "lib-release" 219 CARES_TARGET = $(STA_LIB_REL).lib 220 CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB 221 CARES_LFLAGS = 222 SPROG_CFLAGS = /DCARES_STATICLIB /DCARES_NO_DEPRECATED 223 SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_REL) $(STA_LIB_REL).lib 224 CARES_LINK = $(LINK_CMD_LIB) 225 SPROG_LINK = $(LINK_CMD_EXE_REL) 226 CC_CMD = $(CC_CMD_REL) 227 !ENDIF 228 229 !IF "$(CFG)" == "lib-debug" 230 CARES_TARGET = $(STA_LIB_DBG).lib 231 CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB /DDEBUGBUILD 232 CARES_LFLAGS = 233 SPROG_CFLAGS = /DCARES_STATICLIB /DCARES_NO_DEPRECATED 234 SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_DBG) $(STA_LIB_DBG).lib 235 CARES_LINK = $(LINK_CMD_LIB) 236 SPROG_LINK = $(LINK_CMD_EXE_DBG) 237 CC_CMD = $(CC_CMD_DBG) 238 !ENDIF 239 240 !IF "$(CFG)" == "dll-release" 241 CARES_TARGET = $(DYN_LIB_REL).dll 242 CARES_CFLAGS = /DCARES_BUILDING_LIBRARY 243 CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(CARES_OUTDIR)\$(IMP_LIB_REL).lib 244 SPROG_CFLAGS = /DCARES_NO_DEPRECATED 245 SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_REL) $(IMP_LIB_REL).lib 246 CARES_LINK = $(LINK_CMD_DLL) 247 SPROG_LINK = $(LINK_CMD_EXE_REL) 248 CC_CMD = $(CC_CMD_REL) 249 USE_RES_FILE = TRUE 250 RC_CMD = $(RC_CMD_REL) 251 !ENDIF 252 253 !IF "$(CFG)" == "dll-debug" 254 CARES_TARGET = $(DYN_LIB_DBG).dll 255 CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DDEBUGBUILD 256 CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(CARES_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(CARES_OUTDIR)\$(DYN_LIB_DBG).pdb 257 SPROG_CFLAGS = /DCARES_NO_DEPRECATED 258 SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_DBG) $(IMP_LIB_DBG).lib 259 CARES_LINK = $(LINK_CMD_DLL) 260 SPROG_LINK = $(LINK_CMD_EXE_DBG) 261 CC_CMD = $(CC_CMD_DBG) 262 USE_RES_FILE = TRUE 263 RC_CMD = $(RC_CMD_DBG) 264 !ENDIF 265 266 # -------------------------------------------- 267 # Makefile.inc provides lists of source files 268 # -------------------------------------------- 269 270 !INCLUDE .\src\lib\Makefile.inc 271 !INCLUDE .\src\tools\Makefile.inc 272 273 # ---------------------------- 274 # Build lists of object files 275 # ---------------------------- 276 277 !IF "$(VALID_CFGSET)" == "TRUE" 278 279 !IF [ECHO CARES_OBJS=^$(CARES_OBJDIR)\$(CSOURCES: = $(CARES_OBJDIR^)\) > .\cares_objs.inc] == 0 280 !INCLUDE .\cares_objs.inc 281 !IF [DEL .\cares_objs.inc] 282 !ENDIF 283 !ELSE 284 !ERROR Problem generating CARES_OBJS list. 285 !ENDIF 286 CARES_OBJS = $(CARES_OBJS:.c=.obj) 287 CARES_OBJS = $(CARES_OBJS:/=\) 288 !IF "$(USE_RES_FILE)" == "TRUE" 289 CARES_OBJS = $(CARES_OBJS) $(CARES_OBJDIR)\cares.res 290 !ENDIF 291 292 !IF [ECHO PROG2_OBJS=^$(PROG2_OBJDIR)\$(SAMPLESOURCES: = $(PROG2_OBJDIR^)\) > .\prog2_objs.inc] == 0 293 !INCLUDE .\prog2_objs.inc 294 !IF [DEL .\prog2_objs.inc] 295 !ENDIF 296 !ELSE 297 !ERROR Problem generating PROG2_OBJS list. 298 !ENDIF 299 PROG2_OBJS = $(PROG2_OBJS:.c=.obj) 300 PROG2_OBJS = $(PROG2_OBJS:/=\) 301 PROG2_OBJS = $(PROG2_OBJS) $(PROG2_OBJDIR)\adig.obj 302 303 !IF [ECHO PROG3_OBJS=^$(PROG3_OBJDIR)\$(SAMPLESOURCES: = $(PROG3_OBJDIR^)\) > .\prog3_objs.inc] == 0 304 !INCLUDE .\prog3_objs.inc 305 !IF [DEL .\prog3_objs.inc] 306 !ENDIF 307 !ELSE 308 !ERROR Problem generating PROG3_OBJS list. 309 !ENDIF 310 PROG3_OBJS = $(PROG3_OBJS:.c=.obj) 311 PROG3_OBJS = $(PROG3_OBJS:/=\) 312 PROG3_OBJS = $(PROG3_OBJS) $(PROG3_OBJDIR)\ahost.obj 313 314 !ENDIF 315 316 317 # -------------------------------- 318 # Only our custom inference rules 319 # -------------------------------- 320 321 .SUFFIXES: 322 .SUFFIXES: .c .rc 323 324 {$(SRCDIR)\src\lib}.rc{$(CARES_OBJDIR)}.res: 325 $(RC_CMD) /Fo $@ $< 326 327 {$(SRCDIR)\src\lib}.c{$(CARES_OBJDIR)}.obj: 328 $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< 329 330 {$(SRCDIR)\src\lib\dsa}.c{$(CARES_OBJDIR)\dsa}.obj: 331 $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< 332 333 {$(SRCDIR)\src\lib\event}.c{$(CARES_OBJDIR)\event}.obj: 334 $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< 335 336 {$(SRCDIR)\src\lib\legacy}.c{$(CARES_OBJDIR)\legacy}.obj: 337 $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< 338 339 {$(SRCDIR)\src\lib\record}.c{$(CARES_OBJDIR)\record}.obj: 340 $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< 341 342 {$(SRCDIR)\src\lib\str}.c{$(CARES_OBJDIR)\str}.obj: 343 $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< 344 345 {$(SRCDIR)\src\lib\util}.c{$(CARES_OBJDIR)\util}.obj: 346 $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< 347 348 {$(SRCDIR)\src\tools}.c{$(PROG2_OBJDIR)}.obj: 349 $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(PROG2_OBJDIR)\ /c $< 350 351 {$(SRCDIR)\src\tools}.c{$(PROG3_OBJDIR)}.obj: 352 $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(PROG3_OBJDIR)\ /c $< 353 354 # ------------------------------------------------------------- # 355 # ------------------------------------------------------------- # 356 # Default target when no CFG library type has been specified, # 357 # results in building target ALL for all c-ares library types. # 358 # ------------------------------------------------------------- # 359 # ------------------------------------------------------------- # 360 361 !IF "$(VALID_CFGSET)" == "FALSE" 362 363 ALL: 364 $(MAKE) /NOLOGO /f .\Makefile.msvc CFG=lib-release ALL 365 $(MAKE) /NOLOGO /f .\Makefile.msvc CFG=lib-debug ALL 366 $(MAKE) /NOLOGO /f .\Makefile.msvc CFG=dll-release ALL 367 $(MAKE) /NOLOGO /f .\Makefile.msvc CFG=dll-debug ALL 368 369 clean: 370 @-RMDIR /S /Q $(BASE_DIR) >NUL 2>&1 371 372 install: 373 @$(MAKE) /nologo /f .\Makefile.msvc CFG=lib-release install 374 @$(MAKE) /nologo /f .\Makefile.msvc CFG=lib-debug install 375 @$(MAKE) /nologo /f .\Makefile.msvc CFG=dll-release install 376 @$(MAKE) /nologo /f .\Makefile.msvc CFG=dll-debug install 377 378 !ENDIF 379 380 # --------------------------------------------------------------------- 381 # Targets only available when a proper CFG library type has been given 382 # --------------------------------------------------------------------- 383 384 !IF "$(VALID_CFGSET)" == "TRUE" 385 386 ALL: c-ares adig ahost 387 @ 388 389 # $(HHEADERS) $(CSOURCES) 390 c-ares: $(CARES_OBJDIR) $(CARES_OBJS) $(CARES_OUTDIR) 391 $(CARES_LINK) $(CARES_LFLAGS) /out:$(CARES_OUTDIR)\$(CARES_TARGET) $(CARES_OBJS) 392 ! IF "$(USE_RES_FILE)" == "TRUE" 393 @if exist $(CARES_OUTDIR)\$(CARES_TARGET).manifest mt -nologo -manifest $(CARES_OUTDIR)\$(CARES_TARGET).manifest -outputresource:$(CARES_OUTDIR)\$(CARES_TARGET);2 394 ! ENDIF 395 396 # adig.c $(SAMPLESOURCES) $(SAMPLEHEADERS) 397 adig: c-ares $(PROG2_OBJDIR) $(PROG2_OBJS) $(PROG2_OUTDIR) 398 $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG2_OUTDIR)\adig.exe $(PROG2_OBJS:..\lib=) 399 @if exist $(PROG2_OUTDIR)\adig.exe.manifest mt -nologo -manifest $(PROG2_OUTDIR)\adig.exe.manifest -outputresource:$(PROG2_OUTDIR)\adig.exe;1 400 401 # ahost.c $(SAMPLESOURCES) $(SAMPLEHEADERS) 402 ahost: c-ares $(PROG3_OBJDIR) $(PROG3_OBJS) $(PROG3_OUTDIR) 403 $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG3_OUTDIR)\ahost.exe $(PROG3_OBJS:..\lib=) 404 @if exist $(PROG3_OUTDIR)\ahost.exe.manifest mt -nologo -manifest $(PROG3_OUTDIR)\ahost.exe.manifest -outputresource:$(PROG3_OUTDIR)\ahost.exe;1 405 406 $(CARES_OUTDIR): $(CARES_DIR) 407 @if not exist $(CARES_OUTDIR) mkdir $(CARES_OUTDIR) 408 409 $(PROG2_OUTDIR): $(PROG2_DIR) 410 @if not exist $(PROG2_OUTDIR) mkdir $(PROG2_OUTDIR) 411 412 $(PROG3_OUTDIR): $(PROG3_DIR) 413 @if not exist $(PROG3_OUTDIR) mkdir $(PROG3_OUTDIR) 414 415 $(CARES_OBJDIR): $(CARES_OUTDIR) 416 @if not exist $(CARES_OBJDIR) mkdir $(CARES_OBJDIR) 417 @if not exist $(CARES_OBJDIR)\dsa mkdir $(CARES_OBJDIR)\dsa 418 @if not exist $(CARES_OBJDIR)\event mkdir $(CARES_OBJDIR)\event 419 @if not exist $(CARES_OBJDIR)\legacy mkdir $(CARES_OBJDIR)\legacy 420 @if not exist $(CARES_OBJDIR)\record mkdir $(CARES_OBJDIR)\record 421 @if not exist $(CARES_OBJDIR)\str mkdir $(CARES_OBJDIR)\str 422 @if not exist $(CARES_OBJDIR)\util mkdir $(CARES_OBJDIR)\util 423 424 $(PROG2_OBJDIR): $(PROG2_OUTDIR) 425 @if not exist $(PROG2_OBJDIR) mkdir $(PROG2_OBJDIR) 426 @if not exist $(PROG2_OBJDIR)\str mkdir $(PROG2_OBJDIR)\str 427 428 $(PROG3_OBJDIR): $(PROG3_OUTDIR) 429 @if not exist $(PROG3_OBJDIR) mkdir $(PROG3_OBJDIR) 430 @if not exist $(PROG3_OBJDIR)\str mkdir $(PROG3_OBJDIR)\str 431 432 clean: 433 @-RMDIR /S /Q $(CARES_OBJDIR)\dsa >NUL 2>&1 434 @-RMDIR /S /Q $(CARES_OBJDIR)\event >NUL 2>&1 435 @-RMDIR /S /Q $(CARES_OBJDIR)\legacy >NUL 2>&1 436 @-RMDIR /S /Q $(CARES_OBJDIR)\record >NUL 2>&1 437 @-RMDIR /S /Q $(CARES_OBJDIR)\str >NUL 2>&1 438 @-RMDIR /S /Q $(CARES_OBJDIR)\util >NUL 2>&1 439 @-RMDIR /S /Q $(CARES_OUTDIR) >NUL 2>&1 440 @-RMDIR /S /Q $(PROG2_OBJDIR)\str >NUL 2>&1 441 @-RMDIR /S /Q $(PROG2_OUTDIR) >NUL 2>&1 442 @-RMDIR /S /Q $(PROG3_OBJDIR)\str >NUL 2>&1 443 @-RMDIR /S /Q $(PROG3_OUTDIR) >NUL 2>&1 444 445 install: 446 @if not exist $(CARES_OUTDIR)\$(CARES_TARGET) \ 447 $(MAKE) /f .\Makefile.msvc CFG=$(CFG) c-ares 448 @if not exist "$(INSTALL_DIR)" mkdir "$(INSTALL_DIR)" 449 @if not exist "$(INSTALL_DIR_LIB)" mkdir "$(INSTALL_DIR_LIB)" 450 @if not exist "$(INSTALL_DIR_INC)" mkdir "$(INSTALL_DIR_INC)" 451 @copy /y $(CARES_OUTDIR)\*.* "$(INSTALL_DIR_LIB)" >NUL 452 @copy /y $(SRCDIR)\include\ares.h "$(INSTALL_DIR_INC)" >NUL 453 @copy /y $(SRCDIR)\include\ares_build.h "$(INSTALL_DIR_INC)" >NUL 454 @copy /y $(SRCDIR)\include\ares_version.h "$(INSTALL_DIR_INC)" >NUL 455 @copy /y $(SRCDIR)\include\ares_dns_record.h "$(INSTALL_DIR_INC)" >NUL 456 @echo Installed c-ares $(CFG) 457 458 !ENDIF 459 460 $(BASE_DIR): 461 @if not exist $(BASE_DIR) mkdir $(BASE_DIR) 462 463 $(CARES_DIR): $(BASE_DIR) 464 @if not exist $(CARES_DIR) mkdir $(CARES_DIR) 465 466 $(PROG2_DIR): $(BASE_DIR) 467 @if not exist $(PROG2_DIR) mkdir $(PROG2_DIR) 468 469 $(PROG3_DIR): $(BASE_DIR) 470 @if not exist $(PROG3_DIR) mkdir $(PROG3_DIR) 471 472 # End of Makefile.msvc