summaryrefslogtreecommitdiffstats
path: root/src/c-ares/test/Makefile.msvc
diff options
context:
space:
mode:
Diffstat (limited to 'src/c-ares/test/Makefile.msvc')
-rw-r--r--src/c-ares/test/Makefile.msvc304
1 files changed, 304 insertions, 0 deletions
diff --git a/src/c-ares/test/Makefile.msvc b/src/c-ares/test/Makefile.msvc
new file mode 100644
index 000000000..d0745e967
--- /dev/null
+++ b/src/c-ares/test/Makefile.msvc
@@ -0,0 +1,304 @@
+# 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 compiler version.
+# --------------------------------------------------------
+!INCLUDE ..\msvc_ver.inc
+
+# ---------------------------------------------------------
+# 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