quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

Makefile.msvc (11566B)


      1 # Copyright (C) The c-ares project and its contributors
      2 # SPDX-License-Identifier: MIT
      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 
     24 # ------------------------------------------------------------------------------
     25 #
     26 # Makefile for building c-ares test suite with MSVC.
     27 #
     28 # Usage: nmake /f makefile.msvc CFG=<config> <target>
     29 #
     30 # <config> can be one of: [ lib-release | lib-debug | dll-release | dll-debug }
     31 # <target> can be one of: [ all | arestest | clean }
     32 #
     33 # If <target> is not specified then all targets are built.
     34 # If <config> is not specified then lib-debug will be assumed.
     35 #
     36 # This makefile must be processed from the subdir where it is located.
     37 #
     38 # All results are generated below a subdirectory named msvcXXX.
     39 #
     40 # ------------------------------------------------------------------------------
     41 
     42 
     43 # ------------------------------------------------
     44 # c-ares static and dynamic libraries common base
     45 # file names for release and debug configurations
     46 # ------------------------------------------------
     47 
     48 LIBNAME = cares
     49 STA_LIB_REL = lib$(LIBNAME)
     50 DYN_LIB_REL = $(LIBNAME)
     51 STA_LIB_DBG = $(STA_LIB_REL)d
     52 DYN_LIB_DBG = $(DYN_LIB_REL)d
     53 
     54 # -------------------------------------------
     55 # Base names for c-ares DLL import libraries
     56 # -------------------------------------------
     57 
     58 IMP_LIB_REL = $(DYN_LIB_REL)
     59 IMP_LIB_DBG = $(DYN_LIB_DBG)
     60 
     61 # --------------------------
     62 # Runtime library selection
     63 # --------------------------
     64 
     65 RTLIB  = /MD
     66 RTLIBD = /MDd
     67 
     68 !IF "$(RTLIBCFG)" == "static"
     69 RTLIB  = /MT
     70 RTLIBD = /MTd
     71 !ENDIF
     72 
     73 # ---------------------------------------------------------
     74 # Verify that current subdir is below the c-ares source one
     75 # ---------------------------------------------------------
     76 
     77 !IF ! EXIST(..\src\lib\ares_init.c)
     78 !  MESSAGE Can not process Makefile.msvc from outside of c-ares test subdirectory.
     79 !  MESSAGE Change to the subdirectory where Makefile.msvc is found, and try again.
     80 !  ERROR   See previous message.
     81 !ENDIF
     82 
     83 # ------------------------------------------------------------------
     84 # Base subdir is the common root from which other subdirs will hang,
     85 # the name depends on MSVC version being used when building c-ares.
     86 # ------------------------------------------------------------------
     87 
     88 BASE_DIR = .\msvc
     89 # Look for a built library of the same configuration in the directory above.
     90 LIB_BASE_DIR = ..\msvc
     91 
     92 # ----------------------------------------
     93 # Subdir holding sources for all projects
     94 # ----------------------------------------
     95 
     96 SRCDIR = .
     97 
     98 # -------------------------
     99 # Configuration validation
    100 # -------------------------
    101 
    102 !IF "$(CFG)" == ""
    103 CFG = lib-debug
    104 !ENDIF
    105 
    106 VALID_CFGSET = FALSE
    107 !IF "$(CFG)" == "lib-release" || "$(CFG)" == "lib-debug" || \
    108     "$(CFG)" == "dll-release" || "$(CFG)" == "dll-debug"
    109 VALID_CFGSET = TRUE
    110 !ENDIF
    111 
    112 !IF "$(VALID_CFGSET)" == "FALSE"
    113 !  MESSAGE MSVC c-ares makefile
    114 !  MESSAGE
    115 !  MESSAGE Usage: nmake /f makefile.msvc CFG=<config> GTEST_ROOT=<google-test-install> <target>
    116 !  MESSAGE
    117 !  MESSAGE <config> can be one of: [ lib-release | lib-debug | dll-release | dll-debug }
    118 !  MESSAGE <target> can be one of: [ all | arestest | aresfuzz | aresfuzzname | dnsdump | clean }
    119 !  MESSAGE
    120 !  MESSAGE If <target> is not specified then all targets are built.
    121 !  MESSAGE If <config> is not specified then lib-debug will be assumed.
    122 !  MESSAGE
    123 !  ERROR Choose a valid configuration.
    124 !ENDIF
    125 
    126 !IF "$(GTEST_ROOT)" == ""
    127 !  ERROR Missing GTEST_ROOT
    128 !ENDIF
    129 
    130 # --------------------------------------------------------
    131 # Project subdirs independent of configuration being used
    132 # --------------------------------------------------------
    133 
    134 PROG_DIR = $(BASE_DIR)\arestest
    135 LIB_DIR = $(LIB_BASE_DIR)\cares
    136 
    137 # ---------------------------------------------------
    138 # Subdirs which are configuration dependent are only
    139 # defined when a valid configuration has been given.
    140 # ---------------------------------------------------
    141 
    142 PROG_OUTDIR = $(PROG_DIR)\$(CFG)
    143 PROG_OBJDIR = $(PROG_OUTDIR)\obj
    144 LIB_OUTDIR = $(LIB_DIR)\$(CFG)
    145 
    146 
    147 # -------------------------------------
    148 # TCP/IP stack settings
    149 # -------------------------------------
    150 CFLAGS  = /DWIN32
    151 EX_LIBS_REL = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib
    152 EX_LIBS_DBG = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib
    153 
    154 
    155 # ----------------------------
    156 # Assorted commands and flags
    157 # ----------------------------
    158 
    159 CC_CMD_REL = cl.exe /nologo $(RTLIB) /DNDEBUG /O2 /D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS
    160 CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi /D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS /RTCsu
    161 CC_CFLAGS  = $(CFLAGS) /I. /I../src/lib /I../src/lib/include /I../include /I $(GTEST_ROOT)/include /W3 /EHsc /FD
    162 
    163 RC_CMD_REL = rc.exe /l 0x409 /d "NDEBUG"
    164 RC_CMD_DBG = rc.exe /l 0x409 /d "_DEBUG"
    165 
    166 LINK_CMD_LIB = link.exe /lib /nologo
    167 LINK_CMD_DLL = link.exe /dll /nologo /incremental:no /fixed:no
    168 LINK_CMD_EXE = link.exe /nologo /incremental:no /fixed:no /subsystem:console
    169 
    170 LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release
    171 LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug
    172 
    173 # ---------------------------------
    174 # Configuration dependent settings
    175 # ---------------------------------
    176 
    177 !IF "$(CFG)" == "lib-release"
    178 CARES_TARGET = $(STA_LIB_REL).lib
    179 CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB
    180 CARES_LFLAGS =
    181 SPROG_CFLAGS = /DCARES_STATICLIB /DCARES_NO_DEPRECATED
    182 SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_REL) $(STA_LIB_REL).lib
    183 CARES_LINK   = $(LINK_CMD_LIB)
    184 SPROG_LINK   = $(LINK_CMD_EXE_REL)
    185 CC_CMD       = $(CC_CMD_REL)
    186 !ENDIF
    187 
    188 !IF "$(CFG)" == "lib-debug"
    189 CARES_TARGET = $(STA_LIB_DBG).lib
    190 CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB /DDEBUGBUILD
    191 CARES_LFLAGS =
    192 SPROG_CFLAGS = /DCARES_STATICLIB /DCARES_NO_DEPRECATED
    193 SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_DBG) $(STA_LIB_DBG).lib
    194 CARES_LINK   = $(LINK_CMD_LIB)
    195 SPROG_LINK   = $(LINK_CMD_EXE_DBG)
    196 CC_CMD       = $(CC_CMD_DBG)
    197 !ENDIF
    198 
    199 !IF "$(CFG)" == "dll-release"
    200 CARES_TARGET = $(DYN_LIB_REL).dll
    201 CARES_CFLAGS = /DCARES_BUILDING_LIBRARY
    202 CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(PROG_OUTDIR)\$(IMP_LIB_REL).lib
    203 SPROG_CFLAGS = /DCARES_NO_DEPRECATED
    204 SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_REL) $(IMP_LIB_REL).lib
    205 CARES_LINK   = $(LINK_CMD_DLL)
    206 SPROG_LINK   = $(LINK_CMD_EXE_REL)
    207 CC_CMD       = $(CC_CMD_REL)
    208 USE_RES_FILE = TRUE
    209 RC_CMD       = $(RC_CMD_REL)
    210 !ENDIF
    211 
    212 !IF "$(CFG)" == "dll-debug"
    213 CARES_TARGET = $(DYN_LIB_DBG).dll
    214 CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DDEBUGBUILD
    215 CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(PROG_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(PROG_OUTDIR)\$(DYN_LIB_DBG).pdb
    216 SPROG_CFLAGS = /DCARES_NO_DEPRECATED
    217 SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_DBG) $(IMP_LIB_DBG).lib
    218 CARES_LINK   = $(LINK_CMD_DLL)
    219 SPROG_LINK   = $(LINK_CMD_EXE_DBG)
    220 CC_CMD       = $(CC_CMD_DBG)
    221 USE_RES_FILE = TRUE
    222 RC_CMD       = $(RC_CMD_DBG)
    223 !ENDIF
    224 
    225 # --------------------------------------------
    226 # Makefile.inc provides lists of source files
    227 # --------------------------------------------
    228 
    229 !INCLUDE .\Makefile.inc
    230 
    231 # ----------------------------
    232 # Build lists of object files
    233 # ----------------------------
    234 
    235 !IF [ECHO PROG_OBJS=^$(PROG_OBJDIR)\$(TESTSOURCES: = $(PROG_OBJDIR^)\) > .\prog_objs.inc] == 0
    236 !INCLUDE .\prog_objs.inc
    237 !IF [DEL .\prog_objs.inc]
    238 !ENDIF
    239 !ELSE
    240 !ERROR Problem generating PROG_OBJS list.
    241 !ENDIF
    242 PROG_OBJS = $(PROG_OBJS:.cc=.obj)
    243 
    244 !IF [ECHO FUZZ_OBJS=^$(PROG_OBJDIR)\$(FUZZSOURCES: = $(PROG_OBJDIR^)\) > .\fuzz_objs.inc] == 0
    245 !INCLUDE .\fuzz_objs.inc
    246 !IF [DEL .\fuzz_objs.inc]
    247 !ENDIF
    248 !ELSE
    249 !ERROR Problem generating FUZZ_OBJS list.
    250 !ENDIF
    251 FUZZ_OBJS = $(FUZZ_OBJS:.c=.obj)
    252 
    253 !IF [ECHO FUZZNAME_OBJS=^$(PROG_OBJDIR)\$(FUZZNAMESOURCES: = $(PROG_OBJDIR^)\) > .\fuzzname_objs.inc] == 0
    254 !INCLUDE .\fuzzname_objs.inc
    255 !IF [DEL .\fuzzname_objs.inc]
    256 !ENDIF
    257 !ELSE
    258 !ERROR Problem generating FUZZNAME_OBJS list.
    259 !ENDIF
    260 FUZZNAME_OBJS = $(FUZZNAME_OBJS:.c=.obj)
    261 
    262 !IF [ECHO DNSDUMP_OBJS=^$(PROG_OBJDIR)\$(DUMPSOURCES: = $(PROG_OBJDIR^)\) > .\dnsdump_objs.inc] == 0
    263 !INCLUDE .\dnsdump_objs.inc
    264 !IF [DEL .\dnsdump_objs.inc]
    265 !ENDIF
    266 !ELSE
    267 !ERROR Problem generating DNSDUMP_OBJS list.
    268 !ENDIF
    269 DNSDUMP_OBJS = $(DNSDUMP_OBJS:.cc=.obj)
    270 
    271 # --------------------------------
    272 # Only our custom inference rules
    273 # --------------------------------
    274 
    275 .SUFFIXES:
    276 .SUFFIXES: .cc .c
    277 
    278 {$(SRCDIR)}.cc{$(PROG_OBJDIR)}.obj:
    279     $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
    280 {$(SRCDIR)}.c{$(PROG_OBJDIR)}.obj:
    281     $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
    282 
    283 
    284 # ---------------------------------------------------------------------
    285 # Main targets
    286 # ---------------------------------------------------------------------
    287 
    288 ALL: arestest aresfuzz aresfuzzname dnsdump
    289     @
    290 
    291 test: arestest
    292     $(PROG_OUTDIR)\arestest -4 --gtest_filter=-*LiveSearchTXT*:*LiveSearchANY*:*LiveGetLocalhostByAddr*
    293 vtest: arestest
    294     $(PROG_OUTDIR)\arestest -4 -v --gtest_filter=-*LiveSearchTXT*:*LiveSearchANY*:*LiveGetLocalhostByAddr*
    295 
    296 arestest: $(TESTSOURCES) $(PROG_OUTDIR) $(PROG_OBJDIR) $(PROG_OBJS)
    297     $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG_OUTDIR)\arestest.exe $(PROG_OBJS) $(GTEST_ROOT)/lib/gmock.lib
    298     @if exist $(PROG_OUTDIR)\arestest.exe.manifest mt -nologo -manifest $(PROG_OUTDIR)\arestest.exe.manifest -outputresource:$(PROG_OUTDIR)\arestest.exe;1
    299 
    300 aresfuzz: $(FUZZSOURCES) $(PROG_OUTDIR) $(PROG_OBJDIR) $(FUZZ_OBJS)
    301     $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG_OUTDIR)\aresfuzz.exe $(FUZZ_OBJS)
    302     @if exist $(PROG_OUTDIR)\aresfuzz.exe.manifest mt -nologo -manifest $(PROG_OUTDIR)\aresfuzz.exe.manifest -outputresource:$(PROG_OUTDIR)\aresfuzz.exe;1
    303 
    304 aresfuzzname: $(FUZZNAMESOURCES) $(PROG_OUTDIR) $(PROG_OBJDIR) $(FUZZNAME_OBJS)
    305     $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG_OUTDIR)\aresfuzzname.exe $(FUZZNAME_OBJS)
    306     @if exist $(PROG_OUTDIR)\aresfuzzname.exe.manifest mt -nologo -manifest $(PROG_OUTDIR)\aresfuzzname.exe.manifest -outputresource:$(PROG_OUTDIR)\aresfuzzname.exe;1
    307 
    308 dnsdump: $(DUMPSOURCES) $(PROG_OUTDIR) $(PROG_OBJDIR) $(DNSDUMP_OBJS)
    309     $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG_OUTDIR)\dnsdump.exe $(DNSDUMP_OBJS)
    310     @if exist $(PROG_OUTDIR)\dnsdump.exe.manifest mt -nologo -manifest $(PROG_OUTDIR)\dnsdump.exe.manifest -outputresource:$(PROG_OUTDIR)\dnsdump.exe;1
    311 
    312 $(PROG_OUTDIR): $(PROG_DIR)
    313     @if not exist $(PROG_OUTDIR) mkdir $(PROG_OUTDIR)
    314 
    315 $(PROG_OBJDIR): $(PROG_OUTDIR)
    316     @if not exist $(PROG_OBJDIR) mkdir $(PROG_OBJDIR)
    317 
    318 clean:
    319     @-RMDIR /S /Q $(PROG_OUTDIR) >NUL 2>&1
    320 
    321 $(BASE_DIR):
    322     @if not exist $(BASE_DIR) mkdir $(BASE_DIR)
    323 
    324 $(PROG_DIR): $(BASE_DIR)
    325     @if not exist $(PROG_DIR) mkdir $(PROG_DIR)
    326 
    327 # End of Makefile.msvc