mirror of https://github.com/c-ares/c-ares.git
- Initial nmake file based off library nmake file - Cast socket call arguments to (char *) - Use wrapper sclose() that maps to closesocket() or close() - Build a config.h indicating presence of headers - Conditionally include netdb.h - Remove unnecessary include of sys/socket.h - Force longer bitmask for allocation failure tracking - Call WSAStartup() / WSACleanup() in main() - Set TCP_NODELAY for mock server - Turn on tests in AppVeyor buildpull/34/head
parent
830e8fe2b3
commit
3478963873
12 changed files with 418 additions and 17 deletions
@ -0,0 +1,364 @@ |
|||||||
|
# Permission to use, copy, modify, and distribute this
|
||||||
|
# software and its documentation for any purpose and without
|
||||||
|
# fee is hereby granted, provided that the above copyright
|
||||||
|
# notice appear in all copies and that both that copyright
|
||||||
|
# notice and this permission notice appear in supporting
|
||||||
|
# documentation, and that the name of M.I.T. not be used in
|
||||||
|
# advertising or publicity pertaining to distribution of the
|
||||||
|
# software without specific, written prior permission.
|
||||||
|
# M.I.T. makes no representations about the suitability of
|
||||||
|
# this software for any purpose. It is provided "as is"
|
||||||
|
# without express or implied warranty.
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Makefile for building c-ares test suite with MSVC.
|
||||||
|
#
|
||||||
|
# Usage: nmake /f makefile.msvc CFG=<config> <target>
|
||||||
|
#
|
||||||
|
# <config> can be one of: [ lib-release | lib-debug | dll-release | dll-debug }
|
||||||
|
# <target> can be one of: [ all | arestest | clean }
|
||||||
|
#
|
||||||
|
# If <target> is not specified then all targets are built.
|
||||||
|
# If <config> is not specified then lib-debug will be assumed.
|
||||||
|
#
|
||||||
|
# This makefile must be processed from the subdir where it is located.
|
||||||
|
#
|
||||||
|
# All results are generated below a subdirectory named msvcXXX.
|
||||||
|
#
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------
|
||||||
|
# c-ares static and dynamic libraries common base
|
||||||
|
# file names for release and debug configurations
|
||||||
|
# ------------------------------------------------
|
||||||
|
|
||||||
|
LIBNAME = cares
|
||||||
|
STA_LIB_REL = lib$(LIBNAME)
|
||||||
|
DYN_LIB_REL = $(LIBNAME)
|
||||||
|
STA_LIB_DBG = $(STA_LIB_REL)d
|
||||||
|
DYN_LIB_DBG = $(DYN_LIB_REL)d
|
||||||
|
|
||||||
|
# -------------------------------------------
|
||||||
|
# Base names for c-ares DLL import libraries
|
||||||
|
# -------------------------------------------
|
||||||
|
|
||||||
|
IMP_LIB_REL = $(DYN_LIB_REL)
|
||||||
|
IMP_LIB_DBG = $(DYN_LIB_DBG)
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# Runtime library selection
|
||||||
|
# --------------------------
|
||||||
|
|
||||||
|
RTLIB = /MD
|
||||||
|
RTLIBD = /MDd
|
||||||
|
|
||||||
|
!IF "$(RTLIBCFG)" == "static" |
||||||
|
RTLIB = /MT
|
||||||
|
RTLIBD = /MTd
|
||||||
|
!ENDIF |
||||||
|
|
||||||
|
# -------------------------------------------
|
||||||
|
# Detect NMAKE version deducing MSVC version
|
||||||
|
# -------------------------------------------
|
||||||
|
|
||||||
|
!IFNDEF _NMAKE_VER |
||||||
|
! MESSAGE Macro _NMAKE_VER not defined. |
||||||
|
! MESSAGE Use MSVC's NMAKE to process this makefile. |
||||||
|
! ERROR See previous message. |
||||||
|
!ENDIF |
||||||
|
|
||||||
|
!IF "$(_NMAKE_VER)" == "6.00.8168.0" |
||||||
|
CC_VERS_NUM = 60
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "6.00.9782.0" |
||||||
|
CC_VERS_NUM = 60
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "7.00.8882" |
||||||
|
CC_VERS_NUM = 70
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "7.00.9466" |
||||||
|
CC_VERS_NUM = 70
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "7.00.9955" |
||||||
|
CC_VERS_NUM = 70
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "7.10.2240.8" |
||||||
|
CC_VERS_NUM = 71
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "7.10.3077" |
||||||
|
CC_VERS_NUM = 71
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "8.00.40607.16" |
||||||
|
CC_VERS_NUM = 80
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.42" |
||||||
|
CC_VERS_NUM = 80
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.762" |
||||||
|
CC_VERS_NUM = 80
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "9.00.20706.01" |
||||||
|
CC_VERS_NUM = 90
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "9.00.21022.08" |
||||||
|
CC_VERS_NUM = 90
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "9.00.30729.01" |
||||||
|
CC_VERS_NUM = 90
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "10.00.20506.01" |
||||||
|
CC_VERS_NUM = 100
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "10.00.21003.01" |
||||||
|
CC_VERS_NUM = 100
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "10.00.30128.01" |
||||||
|
CC_VERS_NUM = 100
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "10.00.30319.01" |
||||||
|
CC_VERS_NUM = 100
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "10.00.40219.01" |
||||||
|
CC_VERS_NUM = 100
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "11.00.50522.1" |
||||||
|
CC_VERS_NUM = 110
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "11.00.50727.1" |
||||||
|
CC_VERS_NUM = 110
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "11.00.51106.1" |
||||||
|
CC_VERS_NUM = 110
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "11.00.60315.1" |
||||||
|
CC_VERS_NUM = 110
|
||||||
|
!ELSEIF "$(_NMAKE_VER)" == "12.00.21005.1" |
||||||
|
CC_VERS_NUM = 120
|
||||||
|
!ELSE |
||||||
|
! MESSAGE Unknown value for _NMAKE_VER macro: "$(_NMAKE_VER)" |
||||||
|
! MESSAGE Please, report this condition on the c-ares development |
||||||
|
! MESSAGE mailing list: http://cool.haxx.se/mailman/listinfo/c-ares/ |
||||||
|
! ERROR See previous message. |
||||||
|
!ENDIF |
||||||
|
|
||||||
|
CC_VERS_STR = msvc$(CC_VERS_NUM)
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# Verify that current subdir is below the c-ares source one
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
|
||||||
|
!IF ! EXIST(..\ares_init.c) |
||||||
|
! MESSAGE Can not process Makefile.msvc from outside of c-ares test subdirectory. |
||||||
|
! MESSAGE Change to the subdirectory where Makefile.msvc is found, and try again. |
||||||
|
! ERROR See previous message. |
||||||
|
!ENDIF |
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# Base subdir is the common root from which other subdirs will hang,
|
||||||
|
# the name depends on MSVC version being used when building c-ares.
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
|
||||||
|
BASE_DIR = .\$(CC_VERS_STR)
|
||||||
|
# Look for a built library of the same configuration in the directory above.
|
||||||
|
LIB_BASE_DIR = ..\$(CC_VERS_STR)
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# Subdir holding sources for all projects
|
||||||
|
# ----------------------------------------
|
||||||
|
|
||||||
|
SRCDIR = .
|
||||||
|
|
||||||
|
# -------------------------
|
||||||
|
# Configuration validation
|
||||||
|
# -------------------------
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "" |
||||||
|
CFG = lib-debug
|
||||||
|
!ENDIF |
||||||
|
|
||||||
|
VALID_CFGSET = FALSE
|
||||||
|
!IF "$(CFG)" == "lib-release" || "$(CFG)" == "lib-debug" || \ |
||||||
|
"$(CFG)" == "dll-release" || "$(CFG)" == "dll-debug"
|
||||||
|
VALID_CFGSET = TRUE
|
||||||
|
!ENDIF |
||||||
|
|
||||||
|
!IF "$(VALID_CFGSET)" == "FALSE" |
||||||
|
! MESSAGE MSVC c-ares makefile |
||||||
|
! MESSAGE |
||||||
|
! MESSAGE Usage: nmake /f makefile.msvc CFG=<config> <target> |
||||||
|
! MESSAGE |
||||||
|
! MESSAGE <config> can be one of: [ lib-release | lib-debug | dll-release | dll-debug } |
||||||
|
! MESSAGE <target> can be one of: [ all | arestest | clean } |
||||||
|
! MESSAGE |
||||||
|
! MESSAGE If <target> is not specified then all targets are built. |
||||||
|
! MESSAGE If <config> is not specified then lib-debug will be assumed. |
||||||
|
! MESSAGE |
||||||
|
! ERROR Choose a valid configuration. |
||||||
|
!ENDIF |
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
# Project subdirs independent of configuration being used
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
PROG_DIR = $(BASE_DIR)\arestest
|
||||||
|
LIB_DIR = $(LIB_BASE_DIR)\cares
|
||||||
|
|
||||||
|
GMOCK_DIR = gmock-1.7.0
|
||||||
|
GTEST_DIR = $(GMOCK_DIR)\gtest
|
||||||
|
GMOCK_SRC_DIR = $(GMOCK_DIR)\src
|
||||||
|
GTEST_SRC_DIR = $(GTEST_DIR)\src
|
||||||
|
|
||||||
|
# ---------------------------------------------------
|
||||||
|
# Subdirs which are configuration dependent are only
|
||||||
|
# defined when a valid configuration has been given.
|
||||||
|
# ---------------------------------------------------
|
||||||
|
|
||||||
|
PROG_OUTDIR = $(PROG_DIR)\$(CFG)
|
||||||
|
PROG_OBJDIR = $(PROG_OUTDIR)\obj
|
||||||
|
LIB_OUTDIR = $(LIB_DIR)\$(CFG)
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# TCP/IP stack settings
|
||||||
|
# -------------------------------------
|
||||||
|
CFLAGS = /DWIN32
|
||||||
|
EX_LIBS_REL = ws2_32.lib advapi32.lib kernel32.lib
|
||||||
|
EX_LIBS_DBG = ws2_32.lib advapi32.lib kernel32.lib
|
||||||
|
|
||||||
|
# -----------------------------------------
|
||||||
|
# Switches that depend on compiler version
|
||||||
|
# -----------------------------------------
|
||||||
|
|
||||||
|
!IF $(CC_VERS_NUM) == 60
|
||||||
|
PDB_NONE = /pdb:none
|
||||||
|
PDBTYPE_CONSOLIDATE = /pdbtype:consolidate
|
||||||
|
!ELSE |
||||||
|
!UNDEF PDB_NONE |
||||||
|
!UNDEF PDBTYPE_CONSOLIDATE |
||||||
|
!ENDIF |
||||||
|
|
||||||
|
!IF $(CC_VERS_NUM) <= 70 |
||||||
|
RT_ERROR_CHECKING = /GZ
|
||||||
|
!ELSE |
||||||
|
RT_ERROR_CHECKING = /RTCsu
|
||||||
|
!ENDIF |
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# Assorted commands and flags
|
||||||
|
# ----------------------------
|
||||||
|
|
||||||
|
CC_CMD_REL = cl.exe /nologo $(RTLIB) /DNDEBUG /O2 /D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS
|
||||||
|
CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi /D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS $(RT_ERROR_CHECKING)
|
||||||
|
CC_CFLAGS = $(CFLAGS) /I. /I.. /I $(GTEST_DIR)/include /I $(GMOCK_DIR)/include /W3 /EHsc /FD
|
||||||
|
|
||||||
|
RC_CMD_REL = rc.exe /l 0x409 /d "NDEBUG"
|
||||||
|
RC_CMD_DBG = rc.exe /l 0x409 /d "_DEBUG"
|
||||||
|
|
||||||
|
LINK_CMD_LIB = link.exe /lib /nologo
|
||||||
|
LINK_CMD_DLL = link.exe /dll /nologo /incremental:no /fixed:no
|
||||||
|
LINK_CMD_EXE = link.exe /nologo /incremental:no /fixed:no /subsystem:console
|
||||||
|
|
||||||
|
LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release $(PDB_NONE)
|
||||||
|
LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug $(PDBTYPE_CONSOLIDATE)
|
||||||
|
|
||||||
|
# ---------------------------------
|
||||||
|
# Configuration dependent settings
|
||||||
|
# ---------------------------------
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "lib-release" |
||||||
|
CARES_TARGET = $(STA_LIB_REL).lib
|
||||||
|
CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB
|
||||||
|
CARES_LFLAGS =
|
||||||
|
SPROG_CFLAGS = /DCARES_STATICLIB
|
||||||
|
SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_REL) $(STA_LIB_REL).lib
|
||||||
|
CARES_LINK = $(LINK_CMD_LIB)
|
||||||
|
SPROG_LINK = $(LINK_CMD_EXE_REL)
|
||||||
|
CC_CMD = $(CC_CMD_REL)
|
||||||
|
!ENDIF |
||||||
|
|
||||||
|
!IF "$(CFG)" == "lib-debug" |
||||||
|
CARES_TARGET = $(STA_LIB_DBG).lib
|
||||||
|
CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB /DDEBUGBUILD
|
||||||
|
CARES_LFLAGS =
|
||||||
|
SPROG_CFLAGS = /DCARES_STATICLIB
|
||||||
|
SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_DBG) $(STA_LIB_DBG).lib
|
||||||
|
CARES_LINK = $(LINK_CMD_LIB)
|
||||||
|
SPROG_LINK = $(LINK_CMD_EXE_DBG)
|
||||||
|
CC_CMD = $(CC_CMD_DBG)
|
||||||
|
!ENDIF |
||||||
|
|
||||||
|
!IF "$(CFG)" == "dll-release" |
||||||
|
CARES_TARGET = $(DYN_LIB_REL).dll
|
||||||
|
CARES_CFLAGS = /DCARES_BUILDING_LIBRARY
|
||||||
|
CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(PROG_OUTDIR)\$(IMP_LIB_REL).lib $(PDB_NONE)
|
||||||
|
SPROG_CFLAGS =
|
||||||
|
SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_REL) $(IMP_LIB_REL).lib
|
||||||
|
CARES_LINK = $(LINK_CMD_DLL)
|
||||||
|
SPROG_LINK = $(LINK_CMD_EXE_REL)
|
||||||
|
CC_CMD = $(CC_CMD_REL)
|
||||||
|
USE_RES_FILE = TRUE
|
||||||
|
RC_CMD = $(RC_CMD_REL)
|
||||||
|
!ENDIF |
||||||
|
|
||||||
|
!IF "$(CFG)" == "dll-debug" |
||||||
|
CARES_TARGET = $(DYN_LIB_DBG).dll
|
||||||
|
CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DDEBUGBUILD
|
||||||
|
CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(PROG_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(PROG_OUTDIR)\$(DYN_LIB_DBG).pdb $(PDBTYPE_CONSOLIDATE)
|
||||||
|
SPROG_CFLAGS =
|
||||||
|
SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_DBG) $(IMP_LIB_DBG).lib
|
||||||
|
CARES_LINK = $(LINK_CMD_DLL)
|
||||||
|
SPROG_LINK = $(LINK_CMD_EXE_DBG)
|
||||||
|
CC_CMD = $(CC_CMD_DBG)
|
||||||
|
USE_RES_FILE = TRUE
|
||||||
|
RC_CMD = $(RC_CMD_DBG)
|
||||||
|
!ENDIF |
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Makefile.inc provides lists of source files
|
||||||
|
# --------------------------------------------
|
||||||
|
|
||||||
|
!INCLUDE .\Makefile.inc |
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# Build lists of object files
|
||||||
|
# ----------------------------
|
||||||
|
|
||||||
|
!IF [ECHO PROG_OBJS=^$(PROG_OBJDIR)\$(TESTSOURCES: = $(PROG_OBJDIR^)\) > .\prog_objs.inc] == 0 |
||||||
|
!INCLUDE .\prog_objs.inc |
||||||
|
!IF [DEL .\prog_objs.inc] |
||||||
|
!ENDIF |
||||||
|
!ELSE |
||||||
|
!ERROR Problem generating PROG_OBJS list. |
||||||
|
!ENDIF |
||||||
|
PROG_OBJS = $(PROG_OBJS:.cc=.obj)
|
||||||
|
GTEST_OBJ = $(PROG_OBJDIR)\gtest-all.obj
|
||||||
|
GMOCK_OBJ = $(PROG_OBJDIR)\gmock-all.obj
|
||||||
|
|
||||||
|
# --------------------------------
|
||||||
|
# Only our custom inference rules
|
||||||
|
# --------------------------------
|
||||||
|
|
||||||
|
.SUFFIXES: |
||||||
|
.SUFFIXES: .cc |
||||||
|
|
||||||
|
{$(SRCDIR)}.cc{$(PROG_OBJDIR)}.obj: |
||||||
|
$(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
|
||||||
|
{$(GMOCK_SRC_DIR)}.cc{$(PROG_OBJDIR)}.obj: |
||||||
|
$(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /I $(GMOCK_DIR) /Fo$@ /Fd$(@D)\ /c $<
|
||||||
|
{$(GTEST_SRC_DIR)}.cc{$(PROG_OBJDIR)}.obj: |
||||||
|
$(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /I $(GTEST_DIR) /Fo$@ /Fd$(@D)\ /c $<
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Main targets
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
ALL: arestest |
||||||
|
@
|
||||||
|
|
||||||
|
test: arestest |
||||||
|
$(PROG_OUTDIR)\arestest
|
||||||
|
vtest: arestest |
||||||
|
$(PROG_OUTDIR)\arestest -v
|
||||||
|
|
||||||
|
arestest: $(TESTSOURCES) $(PROB_OUTDIR) $(PROG_OBJDIR) $(PROG_OBJS) $(GTEST_OBJ) $(GMOCK_OBJ) |
||||||
|
$(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG_OUTDIR)\arestest.exe $(PROG_OBJS) $(GTEST_OBJ) $(GMOCK_OBJ)
|
||||||
|
@if exist $(PROG_OUTDIR)\arestest.exe.manifest mt -nologo -manifest $(PROG_OUTDIR)\arestest.exe.manifest -outputresource:$(PROG_OUTDIR)\arestest.exe;1
|
||||||
|
|
||||||
|
$(PROG_OUTDIR): $(PROG_DIR) |
||||||
|
@if not exist $(PROG_OUTDIR) mkdir $(PROG_OUTDIR)
|
||||||
|
|
||||||
|
$(PROG_OBJDIR): $(PROG_OUTDIR) |
||||||
|
@if not exist $(PROG_OBJDIR) mkdir $(PROG_OBJDIR)
|
||||||
|
|
||||||
|
clean: |
||||||
|
@-RMDIR /S /Q $(PROG_OUTDIR) >NUL 2>&1
|
||||||
|
|
||||||
|
$(BASE_DIR): |
||||||
|
@if not exist $(BASE_DIR) mkdir $(BASE_DIR)
|
||||||
|
|
||||||
|
$(PROG_DIR): $(BASE_DIR) |
||||||
|
@if not exist $(PROG_DIR) mkdir $(PROG_DIR)
|
||||||
|
|
||||||
|
# End of Makefile.msvc
|
Loading…
Reference in new issue