7e2a8ec4创建于 2025年12月15日历史提交
# Copyright (C) The c-ares project and its contributors
# SPDX-License-Identifier: MIT

image: Previous Visual Studio 2022

# Github/Bitbucket only: get source code for one particular commit as zip archive, instead of git clone'ing.
shallow_clone: true

# Github/Bitbucket only: per-file commit filtering
skip_commits:
  files:
    - .gitignore
    - '**/*.md'
    - .travis.yml
    - .cirrus.yml
    - '.github/**'

# List of build configurations to test.
configuration:
  - DEBUG

# Note: You can set extra cmake args for a particular matrix entry with CMAKE_EXTRA_OPTIONS. For example:
#     CMAKE_EXTRA_OPTIONS: -DOPENSSL_ROOT_DIR=C:/OpenSSL-Win32
environment:
  matrix:
    # MSVC 2022, 32-bit x86 (cmake)
    - COMPILER: MSVC
      CONFTOOL: CMAKE
      SYSTEM: CONSOLE
      SKIP_TESTS: no
      MSVC_SETUP_ARG: x86
      MSVC_SETUP_PATH: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat
      CMAKE_EXTRA_OPTIONS: -GNinja -DCARES_BUILD_TESTS=ON -DGTEST_ROOT=C:\projects\googletest -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL
      TOOLSDIR: ./build/bin
      TESTDIR: ./build/bin
      BUILD_GOOGLETEST: yes

    # MSVC 2022, 64-bit x64 (cmake)
    - COMPILER: MSVC
      CONFTOOL: CMAKE
      SYSTEM: CONSOLE
      SKIP_TESTS: no
      MSVC_SETUP_ARG: x64
      MSVC_SETUP_PATH: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
      TOOLSDIR: ./build/bin
      TESTDIR: ./build/bin
      CMAKE_EXTRA_OPTIONS: -GNinja -DCARES_BUILD_TESTS=ON -DGTEST_ROOT=C:\projects\googletest -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL
      BUILD_GOOGLETEST: yes

    # MSVC 2022, 64-bit x86 (nmake)
    - COMPILER: MSVC
      CONFTOOL: NMAKE
      SYSTEM: CONSOLE
      SKIP_TESTS: no
      MSVC_SETUP_ARG: x64
      MSVC_SETUP_PATH: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
      BUILD_GOOGLETEST: yes

    # MSVC 2022, 32-bit x86 (nmake)
    - COMPILER: MSVC
      CONFTOOL: NMAKE
      SYSTEM: CONSOLE
      SKIP_TESTS: no
      MSVC_SETUP_ARG: x86
      MSVC_SETUP_PATH: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat
      BUILD_GOOGLETEST: yes

    # MinGW, 32-bit x86 (makefiles)
    - COMPILER: MINGW
      CONFTOOL: MAKE
      SYSTEM: CONSOLE
      SKIP_TESTS: no
      PATH: C:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin;%PATH%
      BUILD_GOOGLETEST: yes

    # MinGW, 32-bit x86 (cmake static only)
    - COMPILER: MINGW
      CONFTOOL: CMAKE
      SYSTEM: CONSOLE
      SKIP_TESTS: no
      TOOLSDIR: ./build/bin
      TESTDIR: ./build/bin
      PATH: C:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin;%PATH%
      CMAKE_EXTRA_OPTIONS: -DCARES_SHARED=OFF -GNinja -DCARES_BUILD_TESTS=ON -DGTEST_ROOT=C:\projects\googletest
      BUILD_GOOGLETEST: yes

# Disabled until AppVeyor updates their Visual Studio with this patch:
# https://developercommunity.visualstudio.com/t/clexe-compiler-error-C1007-when-compili/10486219
#    # MSVC 2022, UWP (cmake)
#    - COMPILER: MSVC
#      CONFTOOL: CMAKE
#      SYSTEM: CONSOLE
#      SKIP_TESTS: yes
#      MSVC_SETUP_ARG: x64 store
#      MSVC_SETUP_PATH: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat
#      CMAKE_EXTRA_OPTIONS: -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 -A x64


install:
  - if "%COMPILER%" == "MINGW" rename "C:\Program Files\Git\usr\bin\sh.exe" "sh2.exe"

before_build:
  # Setup build environment for the selected compiler (not all compilers need to do anything here).
  #  -- Visual Studio --
  - if "%COMPILER%" == "MSVC" call "%MSVC_SETUP_PATH%" %MSVC_SETUP_ARG%
  - if "%BUILD_GOOGLETEST%" == "yes" git clone --depth=1 https://github.com/google/googletest googletest
  - if "%BUILD_GOOGLETEST%" == "yes" cd googletest
  - if "%BUILD_GOOGLETEST%" == "yes" cmake -DCMAKE_INSTALL_PREFIX=C:\projects\googletest -DCMAKE_POLICY_DEFAULT_CMP0091:STRING=NEW -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL -GNinja -Bbuild
  - if "%BUILD_GOOGLETEST%" == "yes" cmake --build build --config Debug
  - if "%BUILD_GOOGLETEST%" == "yes" cmake --install build --config Debug
  - if "%BUILD_GOOGLETEST%" == "yes" cd ..

build_script:
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "NMAKE"     copy .\include\ares_build.h.dist .\include\ares_build.h
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "NMAKE"     nmake /NOLOGO /f .\Makefile.msvc
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "CMAKE"     cmake -DCMAKE_BUILD_TYPE=%configuration% -DCMAKE_INSTALL_PREFIX=C:\projects\build-cares\test_install -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON %CMAKE_EXTRA_OPTIONS% -Bbuild
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "CMAKE"     cmake --build build --config Debug
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "CMAKE"     cmake --install build --config Debug
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "MAKE"      copy .\include\ares_build.h.dist .\include\ares_build.h
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "MAKE"      mingw32-make.exe -f Makefile.m32 demos

test_script:
  # We can't use powershell for tests due to treating stderr as an error
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "NMAKE" if not "%SKIP_TESTS%" == "yes" cd test
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "NMAKE" if not "%SKIP_TESTS%" == "yes" nmake GTEST_ROOT=C:\projects\googletest /NOLOGO /f .\Makefile.msvc vtest
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "NMAKE" if not "%SKIP_TESTS%" == "yes" nmake GTEST_ROOT=C:\projects\googletest /NOLOGO /f .\Makefile.msvc aresfuzz aresfuzzname dnsdump
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "NMAKE" if not "%SKIP_TESTS%" == "yes" .\msvc\arestest\lib-debug\dnsdump.exe fuzzinput\answer_a fuzzinput\answer_aaaa
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "MAKE"  if not "%SKIP_TESTS%" == "yes" cd test
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "MAKE"  if not "%SKIP_TESTS%" == "yes" mingw32-make.exe GTEST_ROOT=C:\projects\googletest -f Makefile.m32 vtest
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "MAKE"  if not "%SKIP_TESTS%" == "yes" mingw32-make.exe GTEST_ROOT=C:\projects\googletest -f Makefile.m32 aresfuzz.exe aresfuzzname.exe dnsdump.exe
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "MAKE"  if not "%SKIP_TESTS%" == "yes" .\dnsdump.exe fuzzinput\answer_a fuzzinput\answer_aaaa
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "CMAKE" if not "%SKIP_TESTS%" == "yes" cd %TESTDIR%
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "CMAKE" if not "%SKIP_TESTS%" == "yes" .\adig.exe www.google.com
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "CMAKE" if not "%SKIP_TESTS%" == "yes" .\ahost.exe www.google.com
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "CMAKE" if not "%SKIP_TESTS%" == "yes" .\arestest.exe --gtest_filter=-*LiveSearchTXT*:*LiveSearchANY*:*LiveGetLocalhostByAddr*
  - if "%SYSTEM%" == "CONSOLE" if "%CONFTOOL%" == "CMAKE" if not "%SKIP_TESTS%" == "yes" .\dnsdump.exe "%APPVEYOR_BUILD_FOLDER%\test\fuzzinput\answer_a" "%APPVEYOR_BUILD_FOLDER%\test\fuzzinput\answer_aaaa"

#on_finish:
#  - cd C:\projects\build-cares\test
#  - dir /B *.log > list.txt
#  - cmake -E tar cfv all_tests.zip --format=zip --files-from=list.txt
#  - appveyor PushArtifact all_tests.zip
#  - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
# Force build worker to stay open after build is done, so we can RDP into it.

# Enable RDP connections into build worker.
#init:
#  - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))