Makefile.msvc 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  1. # Copyright (C) 2009-2013 by Daniel Stenberg
  2. #
  3. # Permission to use, copy, modify, and distribute this
  4. # software and its documentation for any purpose and without
  5. # fee is hereby granted, provided that the above copyright
  6. # notice appear in all copies and that both that copyright
  7. # notice and this permission notice appear in supporting
  8. # documentation, and that the name of M.I.T. not be used in
  9. # advertising or publicity pertaining to distribution of the
  10. # software without specific, written prior permission.
  11. # M.I.T. makes no representations about the suitability of
  12. # this software for any purpose. It is provided "as is"
  13. # without express or implied warranty.
  14. # ------------------------------------------------------------------------------
  15. #
  16. # Makefile for building c-ares libraries and sample programs with MSVC.
  17. #
  18. # Usage: nmake /f makefile.msvc CFG=<config> <target>
  19. #
  20. # <config> must be one of: [ lib-release | lib-debug | dll-release | dll-debug }
  21. # <target> must be one of: [ ALL | c-ares | acountry | adig | ahost | clean }
  22. #
  23. # If a <target> other than ALL or clean is given, <config> becomes mandatory.
  24. #
  25. # If neither <config> nor <target> are specified this results in
  26. # all targets being built for all <config> c-ares library types.
  27. #
  28. # This makefile must be processed from the subdir where it is located.
  29. #
  30. # All results are generated below a subdirectory named msvcXXX.
  31. #
  32. # ------------------------------------------------------------------------------
  33. NAME = cares
  34. # ------------------------------------------------
  35. # c-ares static and dynamic libraries common base
  36. # file names for release and debug configurations
  37. # ------------------------------------------------
  38. STA_LIB_REL = lib$(NAME)
  39. DYN_LIB_REL = $(NAME)
  40. STA_LIB_DBG = $(STA_LIB_REL)d
  41. DYN_LIB_DBG = $(DYN_LIB_REL)d
  42. # -------------------------------------------
  43. # Base names for c-ares DLL import libraries
  44. # -------------------------------------------
  45. IMP_LIB_REL = $(DYN_LIB_REL)
  46. IMP_LIB_DBG = $(DYN_LIB_DBG)
  47. # --------------------------
  48. # Runtime library selection
  49. # --------------------------
  50. RTLIB = /MD
  51. RTLIBD = /MDd
  52. !IF "$(RTLIBCFG)" == "static"
  53. RTLIB = /MT
  54. RTLIBD = /MTd
  55. !ENDIF
  56. # --------------------------------------------------------
  57. # Define USE_WATT32 to 1 to use the Watt-32 tcp/ip stack,
  58. # otherwise Winsock tcp/ip stack will be used as default.
  59. # --------------------------------------------------------
  60. USE_WATT32 = 0
  61. # --------------------------------------------------------
  62. # Detect compiler version.
  63. # --------------------------------------------------------
  64. !INCLUDE .\msvc_ver.inc
  65. # ----------------------------------------------------
  66. # Verify that current subdir is the c-ares source one
  67. # ----------------------------------------------------
  68. !IF ! EXIST(.\src\lib\ares_init.c)
  69. ! MESSAGE Can not process Makefile.msvc from outside of c-ares source subdirectory.
  70. ! MESSAGE Change to the subdirectory where Makefile.msvc is found, and try again.
  71. ! ERROR See previous message.
  72. !ENDIF
  73. # ------------------------------------------------------------------
  74. # Base subdir is the common root from which other subdirs will hang.
  75. # ------------------------------------------------------------------
  76. BASE_DIR = .\msvc
  77. # ----------------------------------------
  78. # Subdir holding sources for all projects
  79. # ----------------------------------------
  80. SRCDIR = .
  81. # -----------------------------
  82. # Default installation subdirs
  83. # -----------------------------
  84. !IFNDEF INSTALL_DIR
  85. INSTALL_DIR = .
  86. !ENDIF
  87. !IFNDEF INSTALL_DIR_LIB
  88. INSTALL_DIR_LIB = $(INSTALL_DIR)\lib
  89. !ENDIF
  90. !IFNDEF INSTALL_DIR_INC
  91. INSTALL_DIR_INC = $(INSTALL_DIR)\include
  92. !ENDIF
  93. # -------------------------
  94. # Configuration validation
  95. # -------------------------
  96. VALID_CFGSET = FALSE
  97. !IF "$(CFG)" == "lib-release" || "$(CFG)" == "lib-debug" || \
  98. "$(CFG)" == "dll-release" || "$(CFG)" == "dll-debug"
  99. VALID_CFGSET = TRUE
  100. !ENDIF
  101. !IF "$(VALID_CFGSET)" == "FALSE" && "$(CFG)" != ""
  102. ! MESSAGE MSVC c-ares makefile
  103. ! MESSAGE
  104. ! MESSAGE Usage: nmake /f makefile.msvc CFG=<config> <target>
  105. ! MESSAGE
  106. ! MESSAGE <config> must be one of: [ lib-release | lib-debug | dll-release | dll-debug }
  107. ! MESSAGE <target> must be one of: [ ALL | c-ares | acountry | adig | ahost | clean }
  108. ! MESSAGE
  109. ! MESSAGE If a <target> other than ALL or clean is given, <config> becomes mandatory.
  110. ! MESSAGE
  111. ! MESSAGE If neither <config> nor <target> are specified this results in
  112. ! MESSAGE all targets being built for all <config> c-ares library types.
  113. ! MESSAGE
  114. ! ERROR Choose a valid configuration.
  115. !ENDIF
  116. # --------------------------------------------------------
  117. # Project subdirs independent of configuration being used
  118. # --------------------------------------------------------
  119. CARES_DIR = $(BASE_DIR)\cares
  120. PROG1_DIR = $(BASE_DIR)\acountry
  121. PROG2_DIR = $(BASE_DIR)\adig
  122. PROG3_DIR = $(BASE_DIR)\ahost
  123. # ---------------------------------------------------
  124. # Subdirs which are configuration dependent are only
  125. # defined when a valid configuration has been given.
  126. # ---------------------------------------------------
  127. !IF "$(VALID_CFGSET)" == "TRUE"
  128. CARES_OUTDIR = $(CARES_DIR)\$(CFG)
  129. PROG1_OUTDIR = $(PROG1_DIR)\$(CFG)
  130. PROG2_OUTDIR = $(PROG2_DIR)\$(CFG)
  131. PROG3_OUTDIR = $(PROG3_DIR)\$(CFG)
  132. CARES_OBJDIR = $(CARES_OUTDIR)\obj
  133. PROG1_OBJDIR = $(PROG1_OUTDIR)\obj
  134. PROG2_OBJDIR = $(PROG2_OUTDIR)\obj
  135. PROG3_OBJDIR = $(PROG3_OUTDIR)\obj
  136. !ELSE
  137. !UNDEF CARES_OUTDIR
  138. !UNDEF PROG1_OUTDIR
  139. !UNDEF PROG2_OUTDIR
  140. !UNDEF PROG3_OUTDIR
  141. !UNDEF CARES_OBJDIR
  142. !UNDEF PROG1_OBJDIR
  143. !UNDEF PROG2_OBJDIR
  144. !UNDEF PROG3_OBJDIR
  145. !ENDIF
  146. # -------------------------------------
  147. # Settings that depend on tcp/ip stack
  148. # -------------------------------------
  149. !IF "$(USE_WATT32)" == "1"
  150. CFLAGS = /UWIN32 /DWATT32 /I$(WATT_ROOT)\inc
  151. EX_LIBS_REL = $(WATT_ROOT)\lib\wattcpvc_imp.lib
  152. EX_LIBS_DBG = $(WATT_ROOT)\lib\wattcpvc_imp_d.lib
  153. !ELSE
  154. CFLAGS = /DWIN32 /D_WIN32_WINNT=0x0600
  155. EX_LIBS_REL = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib
  156. EX_LIBS_DBG = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib
  157. !ENDIF
  158. # -------------------------------------------------
  159. # Switches that depend on ancient compiler versions
  160. # -------------------------------------------------
  161. !IF $(CC_VERS_NUM) == 60
  162. PDB_NONE = /pdb:none
  163. PDBTYPE_CONSOLIDATE = /pdbtype:consolidate
  164. !ELSE
  165. !UNDEF PDB_NONE
  166. !UNDEF PDBTYPE_CONSOLIDATE
  167. !ENDIF
  168. !IF $(CC_VERS_NUM) <= 70
  169. RT_ERROR_CHECKING = /GZ
  170. !ELSE
  171. RT_ERROR_CHECKING = /RTCsu
  172. !ENDIF
  173. # ----------------------------
  174. # Assorted commands and flags
  175. # ----------------------------
  176. CC_CMD_REL = cl.exe /nologo $(RTLIB) /DNDEBUG /O2
  177. CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi $(RT_ERROR_CHECKING)
  178. CC_CFLAGS = $(CFLAGS) /I.\src\lib /I.\include /W3 /EHsc /FD
  179. RC_CMD_REL = rc.exe /l 0x409 /d "NDEBUG"
  180. RC_CMD_DBG = rc.exe /l 0x409 /d "_DEBUG"
  181. LINK_CMD_LIB = link.exe /lib /nologo
  182. LINK_CMD_DLL = link.exe /dll /nologo /incremental:no /fixed:no
  183. LINK_CMD_EXE = link.exe /nologo /incremental:no /fixed:no /subsystem:console
  184. LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release $(PDB_NONE)
  185. LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug $(PDBTYPE_CONSOLIDATE)
  186. # ---------------------------------
  187. # Configuration dependent settings
  188. # ---------------------------------
  189. !IF "$(CFG)" == "lib-release"
  190. CARES_TARGET = $(STA_LIB_REL).lib
  191. CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB
  192. CARES_LFLAGS =
  193. SPROG_CFLAGS = /DCARES_STATICLIB
  194. SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_REL) $(STA_LIB_REL).lib
  195. CARES_LINK = $(LINK_CMD_LIB)
  196. SPROG_LINK = $(LINK_CMD_EXE_REL)
  197. CC_CMD = $(CC_CMD_REL)
  198. !ENDIF
  199. !IF "$(CFG)" == "lib-debug"
  200. CARES_TARGET = $(STA_LIB_DBG).lib
  201. CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB /DDEBUGBUILD
  202. CARES_LFLAGS =
  203. SPROG_CFLAGS = /DCARES_STATICLIB
  204. SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_DBG) $(STA_LIB_DBG).lib
  205. CARES_LINK = $(LINK_CMD_LIB)
  206. SPROG_LINK = $(LINK_CMD_EXE_DBG)
  207. CC_CMD = $(CC_CMD_DBG)
  208. !ENDIF
  209. !IF "$(CFG)" == "dll-release"
  210. CARES_TARGET = $(DYN_LIB_REL).dll
  211. CARES_CFLAGS = /DCARES_BUILDING_LIBRARY
  212. CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(CARES_OUTDIR)\$(IMP_LIB_REL).lib $(PDB_NONE)
  213. SPROG_CFLAGS =
  214. SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_REL) $(IMP_LIB_REL).lib
  215. CARES_LINK = $(LINK_CMD_DLL)
  216. SPROG_LINK = $(LINK_CMD_EXE_REL)
  217. CC_CMD = $(CC_CMD_REL)
  218. USE_RES_FILE = TRUE
  219. RC_CMD = $(RC_CMD_REL)
  220. !ENDIF
  221. !IF "$(CFG)" == "dll-debug"
  222. CARES_TARGET = $(DYN_LIB_DBG).dll
  223. CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DDEBUGBUILD
  224. CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(CARES_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(CARES_OUTDIR)\$(DYN_LIB_DBG).pdb $(PDBTYPE_CONSOLIDATE)
  225. SPROG_CFLAGS =
  226. SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_DBG) $(IMP_LIB_DBG).lib
  227. CARES_LINK = $(LINK_CMD_DLL)
  228. SPROG_LINK = $(LINK_CMD_EXE_DBG)
  229. CC_CMD = $(CC_CMD_DBG)
  230. USE_RES_FILE = TRUE
  231. RC_CMD = $(RC_CMD_DBG)
  232. !ENDIF
  233. # --------------------------------------------
  234. # Makefile.inc provides lists of source files
  235. # --------------------------------------------
  236. !INCLUDE .\src\lib\Makefile.inc
  237. !INCLUDE .\src\tools\Makefile.inc
  238. # ----------------------------
  239. # Build lists of object files
  240. # ----------------------------
  241. !IF "$(VALID_CFGSET)" == "TRUE"
  242. !IF [ECHO CARES_OBJS=^$(CARES_OBJDIR)\$(CSOURCES: = $(CARES_OBJDIR^)\) > .\cares_objs.inc] == 0
  243. !INCLUDE .\cares_objs.inc
  244. !IF [DEL .\cares_objs.inc]
  245. !ENDIF
  246. !ELSE
  247. !ERROR Problem generating CARES_OBJS list.
  248. !ENDIF
  249. CARES_OBJS = $(CARES_OBJS:.c=.obj)
  250. !IF "$(USE_RES_FILE)" == "TRUE"
  251. CARES_OBJS = $(CARES_OBJS) $(CARES_OBJDIR)\cares.res
  252. !ENDIF
  253. !IF [ECHO PROG1_OBJS=^$(PROG1_OBJDIR)\$(SAMPLESOURCES: = $(PROG1_OBJDIR^)\) > .\prog1_objs.inc] == 0
  254. !INCLUDE .\prog1_objs.inc
  255. !IF [DEL .\prog1_objs.inc]
  256. !ENDIF
  257. !ELSE
  258. !ERROR Problem generating PROG1_OBJS list.
  259. !ENDIF
  260. PROG1_OBJS = $(PROG1_OBJS:.c=.obj)
  261. PROG1_OBJS = $(PROG1_OBJS:/=\)
  262. PROG1_OBJS = $(PROG1_OBJS) $(PROG1_OBJDIR)\acountry.obj
  263. !IF [ECHO PROG2_OBJS=^$(PROG2_OBJDIR)\$(SAMPLESOURCES: = $(PROG2_OBJDIR^)\) > .\prog2_objs.inc] == 0
  264. !INCLUDE .\prog2_objs.inc
  265. !IF [DEL .\prog2_objs.inc]
  266. !ENDIF
  267. !ELSE
  268. !ERROR Problem generating PROG2_OBJS list.
  269. !ENDIF
  270. PROG2_OBJS = $(PROG2_OBJS:.c=.obj)
  271. PROG2_OBJS = $(PROG2_OBJS:/=\)
  272. PROG2_OBJS = $(PROG2_OBJS) $(PROG2_OBJDIR)\adig.obj
  273. !IF [ECHO PROG3_OBJS=^$(PROG3_OBJDIR)\$(SAMPLESOURCES: = $(PROG3_OBJDIR^)\) > .\prog3_objs.inc] == 0
  274. !INCLUDE .\prog3_objs.inc
  275. !IF [DEL .\prog3_objs.inc]
  276. !ENDIF
  277. !ELSE
  278. !ERROR Problem generating PROG3_OBJS list.
  279. !ENDIF
  280. PROG3_OBJS = $(PROG3_OBJS:.c=.obj)
  281. PROG3_OBJS = $(PROG3_OBJS:/=\)
  282. PROG3_OBJS = $(PROG3_OBJS) $(PROG3_OBJDIR)\ahost.obj
  283. !ENDIF
  284. # --------------------------------
  285. # Only our custom inference rules
  286. # --------------------------------
  287. .SUFFIXES:
  288. .SUFFIXES: .c .rc
  289. {$(SRCDIR)\src\lib}.rc{$(CARES_OBJDIR)}.res:
  290. $(RC_CMD) /Fo $@ $<
  291. {$(SRCDIR)\src\lib}.c{$(CARES_OBJDIR)}.obj:
  292. $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
  293. {$(SRCDIR)\src\tools}.c{$(PROG1_OBJDIR)}.obj:
  294. $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
  295. {$(SRCDIR)\src\tools}.c{$(PROG2_OBJDIR)}.obj:
  296. $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
  297. {$(SRCDIR)\src\tools}.c{$(PROG3_OBJDIR)}.obj:
  298. $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
  299. # Hack Alert! we reference ../lib/ files in the Makefile.inc for tools as they
  300. # share some files with the library itself. We need to hack around that here.
  301. {$(SRCDIR)\src\lib}.c{$(PROG1_OBJDIR)\..\lib}.obj:
  302. $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$(PROG1_OBJDIR)\$(@F) /Fd$(PROG1_OBJDIR)\ /c $<
  303. {$(SRCDIR)\src\lib}.c{$(PROG2_OBJDIR)\..\lib}.obj:
  304. $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$(PROG2_OBJDIR)\$(@F) /Fd$(PROG2_OBJDIR)\ /c $<
  305. {$(SRCDIR)\src\lib}.c{$(PROG3_OBJDIR)\..\lib}.obj:
  306. $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$(PROG3_OBJDIR)\$(@F) /Fd$(PROG3_OBJDIR)\ /c $<
  307. # ------------------------------------------------------------- #
  308. # ------------------------------------------------------------- #
  309. # Default target when no CFG library type has been specified, #
  310. # results in building target ALL for all c-ares library types. #
  311. # ------------------------------------------------------------- #
  312. # ------------------------------------------------------------- #
  313. !IF "$(VALID_CFGSET)" == "FALSE"
  314. ALL:
  315. $(MAKE) /NOLOGO /f .\Makefile.msvc CFG=lib-release ALL
  316. $(MAKE) /NOLOGO /f .\Makefile.msvc CFG=lib-debug ALL
  317. $(MAKE) /NOLOGO /f .\Makefile.msvc CFG=dll-release ALL
  318. $(MAKE) /NOLOGO /f .\Makefile.msvc CFG=dll-debug ALL
  319. clean:
  320. @-RMDIR /S /Q $(BASE_DIR) >NUL 2>&1
  321. install:
  322. @$(MAKE) /nologo /f .\Makefile.msvc CFG=lib-release install
  323. @$(MAKE) /nologo /f .\Makefile.msvc CFG=lib-debug install
  324. @$(MAKE) /nologo /f .\Makefile.msvc CFG=dll-release install
  325. @$(MAKE) /nologo /f .\Makefile.msvc CFG=dll-debug install
  326. !ENDIF
  327. # ---------------------------------------------------------------------
  328. # Targets only available when a proper CFG library type has been given
  329. # ---------------------------------------------------------------------
  330. !IF "$(VALID_CFGSET)" == "TRUE"
  331. ALL: c-ares acountry adig ahost
  332. @
  333. # $(HHEADERS) $(CSOURCES)
  334. c-ares: $(CARES_OBJDIR) $(CARES_OBJS) $(CARES_OUTDIR)
  335. $(CARES_LINK) $(CARES_LFLAGS) /out:$(CARES_OUTDIR)\$(CARES_TARGET) $(CARES_OBJS)
  336. ! IF "$(USE_RES_FILE)" == "TRUE"
  337. @if exist $(CARES_OUTDIR)\$(CARES_TARGET).manifest mt -nologo -manifest $(CARES_OUTDIR)\$(CARES_TARGET).manifest -outputresource:$(CARES_OUTDIR)\$(CARES_TARGET);2
  338. ! ENDIF
  339. # acountry.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
  340. acountry: c-ares $(PROG1_OBJDIR) $(PROG1_OBJS) $(PROG1_OUTDIR)
  341. $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG1_OUTDIR)\acountry.exe $(PROG1_OBJS:..\lib=)
  342. @if exist $(PROG1_OUTDIR)\acountry.exe.manifest mt -nologo -manifest $(PROG1_OUTDIR)\acountry.exe.manifest -outputresource:$(PROG1_OUTDIR)\acountry.exe;1
  343. # adig.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
  344. adig: c-ares $(PROG2_OBJDIR) $(PROG2_OBJS) $(PROG2_OUTDIR)
  345. $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG2_OUTDIR)\adig.exe $(PROG2_OBJS:..\lib=)
  346. @if exist $(PROG2_OUTDIR)\adig.exe.manifest mt -nologo -manifest $(PROG2_OUTDIR)\adig.exe.manifest -outputresource:$(PROG2_OUTDIR)\adig.exe;1
  347. # ahost.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
  348. ahost: c-ares $(PROG3_OBJDIR) $(PROG3_OBJS) $(PROG3_OUTDIR)
  349. $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG3_OUTDIR)\ahost.exe $(PROG3_OBJS:..\lib=)
  350. @if exist $(PROG3_OUTDIR)\ahost.exe.manifest mt -nologo -manifest $(PROG3_OUTDIR)\ahost.exe.manifest -outputresource:$(PROG3_OUTDIR)\ahost.exe;1
  351. $(CARES_OUTDIR): $(CARES_DIR)
  352. @if not exist $(CARES_OUTDIR) mkdir $(CARES_OUTDIR)
  353. $(PROG1_OUTDIR): $(PROG1_DIR)
  354. @if not exist $(PROG1_OUTDIR) mkdir $(PROG1_OUTDIR)
  355. $(PROG2_OUTDIR): $(PROG2_DIR)
  356. @if not exist $(PROG2_OUTDIR) mkdir $(PROG2_OUTDIR)
  357. $(PROG3_OUTDIR): $(PROG3_DIR)
  358. @if not exist $(PROG3_OUTDIR) mkdir $(PROG3_OUTDIR)
  359. $(CARES_OBJDIR): $(CARES_OUTDIR)
  360. @if not exist $(CARES_OBJDIR) mkdir $(CARES_OBJDIR)
  361. $(PROG1_OBJDIR): $(PROG1_OUTDIR)
  362. @if not exist $(PROG1_OBJDIR) mkdir $(PROG1_OBJDIR)
  363. $(PROG2_OBJDIR): $(PROG2_OUTDIR)
  364. @if not exist $(PROG2_OBJDIR) mkdir $(PROG2_OBJDIR)
  365. $(PROG3_OBJDIR): $(PROG3_OUTDIR)
  366. @if not exist $(PROG3_OBJDIR) mkdir $(PROG3_OBJDIR)
  367. clean:
  368. @-RMDIR /S /Q $(CARES_OUTDIR) >NUL 2>&1
  369. @-RMDIR /S /Q $(PROG1_OUTDIR) >NUL 2>&1
  370. @-RMDIR /S /Q $(PROG2_OUTDIR) >NUL 2>&1
  371. @-RMDIR /S /Q $(PROG3_OUTDIR) >NUL 2>&1
  372. install:
  373. @if not exist $(CARES_OUTDIR)\$(CARES_TARGET) \
  374. $(MAKE) /f .\Makefile.msvc CFG=$(CFG) c-ares
  375. @if not exist "$(INSTALL_DIR)" mkdir "$(INSTALL_DIR)"
  376. @if not exist "$(INSTALL_DIR_LIB)" mkdir "$(INSTALL_DIR_LIB)"
  377. @if not exist "$(INSTALL_DIR_INC)" mkdir "$(INSTALL_DIR_INC)"
  378. @copy /y $(CARES_OUTDIR)\*.* "$(INSTALL_DIR_LIB)" >NUL
  379. @copy /y $(SRCDIR)\include\ares.h "$(INSTALL_DIR_INC)" >NUL
  380. @copy /y $(SRCDIR)\include\ares_build.h "$(INSTALL_DIR_INC)" >NUL
  381. @copy /y $(SRCDIR)\include\ares_rules.h "$(INSTALL_DIR_INC)" >NUL
  382. @copy /y $(SRCDIR)\include\ares_version.h "$(INSTALL_DIR_INC)" >NUL
  383. @echo Installed c-ares $(CFG)
  384. !ENDIF
  385. $(BASE_DIR):
  386. @if not exist $(BASE_DIR) mkdir $(BASE_DIR)
  387. $(CARES_DIR): $(BASE_DIR)
  388. @if not exist $(CARES_DIR) mkdir $(CARES_DIR)
  389. $(PROG1_DIR): $(BASE_DIR)
  390. @if not exist $(PROG1_DIR) mkdir $(PROG1_DIR)
  391. $(PROG2_DIR): $(BASE_DIR)
  392. @if not exist $(PROG2_DIR) mkdir $(PROG2_DIR)
  393. $(PROG3_DIR): $(BASE_DIR)
  394. @if not exist $(PROG3_DIR) mkdir $(PROG3_DIR)
  395. # End of Makefile.msvc