Merge pull request #2429 from BioDataAnalysis/bda_fix_win_build

Fix a number of problems in the Windows build on AppVeyor
diff --git a/appveyor.yml b/appveyor.yml
index 540ab1a..8b791e4 100755
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -28,15 +28,16 @@
     - master
     - /^(release/)?\d+\.\d+\.\d+$/
 
-os:
-  - Visual Studio 2017
-
-matrix:
-  fast_finish: true
+# Note: We could abort all jobs on the first error, but then it
+# becomes hard to learn from the other jobs results. Therefore disabled:
+#matrix:
+#  fast_finish: true
 
 environment:
   matrix:
    - PROFILE: MSVC2017
+     PROFILE_CLASS: MSVC
+     APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
      PLATFORM: x64
      CONFIGURATION: Release
      BUILD_SHARED_LIBS: ON
@@ -47,6 +48,8 @@
      ZLIB_VERSION: 1.2.11
 
    - PROFILE: MSVC2015
+     PROFILE_CLASS: MSVC
+     APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
      PLATFORM: x86
      CONFIGURATION: Debug
      BUILD_SHARED_LIBS: OFF
@@ -55,30 +58,27 @@
      PYTHON_VERSION: 3.5
      QT_VERSION: 5.8
      ZLIB_VERSION: 1.2.8
-     APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
 
    - PROFILE: MINGW
+     PROFILE_CLASS: MINGW
+     # Currently the the latest MSYS2 is in the following image:
+     APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
      PLATFORM: x64
      CONFIGURATION: RelWithDebInfo
      DISABLED_TESTS: (StalenessCheckTest)
 
-   - PROFILE: CYGWIN
-     PLATFORM: x64
-     CONFIGURATION: RelWithDebInfo
-     DISABLED_TESTS: (ZlibTest|OpenSSLManualInitTest|TNonblockingServerTest)
+  # As of 2021.08.06, the Cygwin build is broken with a missing dll exception.
+  # See for an example https://ci.appveyor.com/project/ApacheSoftwareFoundation/thrift/builds/40263513/job/a69xt6m4o0y9x1bw?fullLog=true
+  # - PROFILE: CYGWIN
+  #   PROFILE_CLASS: CYGWIN
+  #   PLATFORM: x64
+  #   CONFIGURATION: RelWithDebInfo
+  #   DISABLED_TESTS: (ZlibTest|OpenSSLManualInitTest|TNonblockingServerTest)
 
-install:
-  - cd %APPVEYOR_BUILD_FOLDER%
-  - call build\appveyor\%PROFILE:~0,4%-appveyor-install.bat
-  - refreshenv
 
 build_script:
   - cd %APPVEYOR_BUILD_FOLDER%
-  - call build\appveyor\%PROFILE:~0,4%-appveyor-build.bat
-
-test_script:
-  - cd %APPVEYOR_BUILD_FOLDER%
-  - call build\appveyor\%PROFILE:~0,4%-appveyor-test.bat
+  - call build\appveyor\%PROFILE_CLASS%-appveyor-full.bat
 
 
 # artifact capture disabled as it might increase service cost for little gain:
diff --git a/build/appveyor/CYGW-appveyor-build.bat b/build/appveyor/CYGW-appveyor-build.bat
deleted file mode 100644
index 7f33287..0000000
--- a/build/appveyor/CYGW-appveyor-build.bat
+++ /dev/null
@@ -1,35 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor                           || EXIT /B
-CALL cl_banner_build.bat                    || EXIT /B
-CALL cl_setenv.bat                          || EXIT /B
-
-SET CMAKEARGS=^
-  -G'%GENERATOR%' ^
-  -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^
-  -DCMAKE_INSTALL_PREFIX=%INSTDIR% ^
-  -DCMAKE_CXX_FLAGS="-D_GNU_SOURCE" ^
-  -DWITH_JAVA=OFF ^
-  -DWITH_PYTHON=OFF
-
-:: -DCMAKE_CXX_EXTENSIONS=ON ^
-:: -DCMAKE_CXX_STANDARD=11 ^
-
-@ECHO ON
-%BASH% -lc "mkdir -p %BUILDDIR% && cd %BUILDDIR% && cmake.exe %SRCDIR% %CMAKEARGS% && cmake --build . --config %CONFIGURATION% --target install" || EXIT /B
-@ECHO OFF
diff --git a/build/appveyor/CYGW-appveyor-install.bat b/build/appveyor/CYGW-appveyor-install.bat
deleted file mode 100644
index 4cdc8ea..0000000
--- a/build/appveyor/CYGW-appveyor-install.bat
+++ /dev/null
@@ -1,50 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-::
-:: Appveyor install script for CYGWIN
-:: Installs third party packages we need for a cmake build
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor                          || EXIT /B
-CALL cl_banner_install.bat                 || EXIT /B
-CALL cl_setenv.bat                         || EXIT /B
-CALL cl_showenv.bat                        || EXIT /B
-
-::
-:: Upgrades cygwin to the latest, if you want...
-::
-:: appveyor DownloadFile "https://cygwin.com/setup-x86_64.exe"
-:: setup-x86_64.exe --quiet-mode --wait --upgrade-also --packages="gcc-g++"
-
-::
-:: Install apt-cyg for package management
-::
-
-%BASH% -lc "wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg && install apt-cyg /bin && rm -f apt-cyg" || EXIT /B
-%BASH% -lc "apt-cyg update" || EXIT /B
-%BASH% -lc "apt-cyg install bison cmake flex gcc-g++ libboost-devel libevent-devel make openssl-devel xz zlib-devel"
-
-::
-:: We need a newer version of cmake, the one cygwin provides is too old
-:: to recognize the version of boost.  Luckily there is a pre-release
-:: one available, however cygwin's own setup program has no command line
-:: option to allow access to test packages!
-::
-
-%BASH% -lc "apt-cyg remove cmake"
-%BASH% -lc "cd / && wget http://mirror.clarkson.edu/cygwin/x86_64/release/cmake/cmake-3.20.0-1.tar.xz && tar xJf cmake-3.20.0-1.tar.xz && hash -r && cmake --version"
diff --git a/build/appveyor/CYGW-appveyor-test.bat b/build/appveyor/CYGW-appveyor-test.bat
deleted file mode 100644
index b667f9b..0000000
--- a/build/appveyor/CYGW-appveyor-test.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-CD build\appveyor              || EXIT /B
-CALL cl_banner_test.bat        || EXIT /B
-CALL cl_setenv.bat             || EXIT /B
-
-%BASH% -lc "cd %BUILDDIR% && ctest.exe -C %CONFIGURATION% --timeout 300 -VV -E '%DISABLED_TESTS%'" || EXIT /B
diff --git a/build/appveyor/CYGWIN-appveyor-full.bat b/build/appveyor/CYGWIN-appveyor-full.bat
new file mode 100644
index 0000000..7f874d9
--- /dev/null
+++ b/build/appveyor/CYGWIN-appveyor-full.bat
@@ -0,0 +1,96 @@
+::
+:: Licensed under the Apache License, Version 2.0 (the "License");
+:: you may not use this file except in compliance with the License.
+:: You may obtain a copy of the License at
+::
+::     http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing, software
+:: distributed under the License is distributed on an "AS IS" BASIS,
+:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+:: See the License for the specific language governing permissions and
+:: limitations under the License.
+::
+
+::
+:: Appveyor script for CYGWIN
+::
+
+::
+:: Installs third party packages we need for a cmake build
+::
+
+@ECHO ON
+SETLOCAL EnableDelayedExpansion
+
+CD build\appveyor || EXIT /B
+
+SET APPVEYOR_SCRIPTS=%APPVEYOR_BUILD_FOLDER%\build\appveyor
+SET BUILDDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM%
+SET INSTDIR=%APPVEYOR_BUILD_FOLDER%\..\install\%PROFILE%\%PLATFORM%
+SET SRCDIR=%APPVEYOR_BUILD_FOLDER%
+
+
+:: compiler and generator detection
+SET COMPILER=gcc
+SET GENERATOR=Unix Makefiles
+
+IF "%PLATFORM%" == "x64" (
+  SET CYGWINROOT=C:\cygwin64
+) ELSE (
+  SET CYGWINROOT=C:\cygwin
+)
+
+IF "%PLATFORM%" == "x64" (
+  SET SETUP=!CYGWINROOT!\setup-x86_64.exe
+) ELSE (
+  SET SETUP=!CYGWINROOT!\setup-x86.exe
+)
+
+SET BASH=!CYGWINROOT!\bin\bash.exe
+SET BUILDDIR=%BUILDDIR:\=/%
+SET BUILDDIR=/cygdrive/c!BUILDDIR:~2!
+SET INSTDIR=%INSTDIR:\=/%
+SET INSTDIR=/cygdrive/c!INSTDIR:~2!
+SET SRCDIR=%SRCDIR:\=/%
+SET SRCDIR=/cygdrive/c!SRCDIR:~2!
+
+
+CALL win_showenv.bat || EXIT /B
+
+::
+:: Install apt-cyg for package management because its easier to use
+:: than Cygwins setup.exe. But both are possible to use.
+::
+
+%BASH% -lc "wget https://rawgit.com/transcode-open/apt-cyg/master/apt-cyg && install apt-cyg /bin && rm -f apt-cyg" || EXIT /B
+%BASH% -lc "apt-cyg update" || EXIT /B
+%BASH% -lc "apt-cyg install unzip xz cmake make bison flex gcc-g++ libboost-devel libevent-devel openssl-devel zlib-devel" || EXIT /B
+
+
+::
+:: Configure and build our software with cmake
+::
+
+SET CMAKEARGS=^
+  -G'%GENERATOR%' ^
+  -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^
+  -DCMAKE_INSTALL_PREFIX=%INSTDIR% ^
+  -DCMAKE_CXX_FLAGS="-D_GNU_SOURCE" ^
+  -DWITH_JAVA=OFF ^
+  -DWITH_PYTHON=OFF
+
+:: -DCMAKE_CXX_EXTENSIONS=ON ^
+:: -DCMAKE_CXX_STANDARD=11 ^
+
+
+%BASH% -lc "mkdir -p %BUILDDIR% && cd %BUILDDIR% && cmake.exe %SRCDIR% %CMAKEARGS% && cmake --build . --config %CONFIGURATION% && cmake --install . --config %CONFIGURATION%" || EXIT /B
+
+
+::
+:: Execute our tests
+::
+
+SET DISABLED_TESTS_COMMAND=--exclude-regex '%DISABLED_TESTS%'
+
+%BASH% -lc "cd %BUILDDIR% && ctest.exe --build-config %CONFIGURATION% --timeout 300 --extra-verbose %DISABLED_TESTS_COMMAND%" || EXIT /B
diff --git a/build/appveyor/MING-appveyor-build.bat b/build/appveyor/MING-appveyor-build.bat
deleted file mode 100644
index eec65f8..0000000
--- a/build/appveyor/MING-appveyor-build.bat
+++ /dev/null
@@ -1,34 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor                           || EXIT /B
-CALL cl_banner_build.bat                    || EXIT /B
-CALL cl_setenv.bat                          || EXIT /B
-
-SET CMAKEARGS=^
-  -G'%GENERATOR%' ^
-  -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^
-  -DCMAKE_INSTALL_PREFIX=%INSTDIR% ^
-  -DCMAKE_MAKE_PROGRAM=/mingw%NORM_PLATFORM%/bin/mingw32-make ^
-  -DCMAKE_C_COMPILER=/mingw%NORM_PLATFORM%/bin/gcc.exe ^
-  -DCMAKE_CXX_COMPILER=/mingw%NORM_PLATFORM%/bin/g++.exe ^
-  -DOPENSSL_ROOT_DIR=/mingw%NORM_PLATFORM% ^
-  -DWITH_PYTHON=OFF
-
-@ECHO ON
-%BASH% -lc "mkdir -p %BUILDDIR% && cd %BUILDDIR% && cmake.exe %SRCDIR% %CMAKEARGS% && cmake --build . --config %CONFIGURATION% --target install" || EXIT /B
-@ECHO OFF
diff --git a/build/appveyor/MING-appveyor-install.bat b/build/appveyor/MING-appveyor-install.bat
deleted file mode 100644
index 862cb1c..0000000
--- a/build/appveyor/MING-appveyor-install.bat
+++ /dev/null
@@ -1,59 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-::
-:: Appveyor install script for MINGW on MSYS2
-:: Installs third party packages we need for a cmake build
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor                          || EXIT /B
-CALL cl_banner_install.bat                 || EXIT /B
-CALL cl_setenv.bat                         || EXIT /B
-CALL cl_showenv.bat                        || EXIT /B
-
-SET PACKAGES=^
-  --needed -S bison flex make ^
-  mingw-w64-%MINGWPLAT%-boost ^
-  mingw-w64-%MINGWPLAT%-cmake ^
-  mingw-w64-%MINGWPLAT%-libevent ^
-  mingw-w64-%MINGWPLAT%-openssl ^
-  mingw-w64-%MINGWPLAT%-toolchain ^
-  mingw-w64-%MINGWPLAT%-zlib
-
-::mingw-w64-%MINGWPLAT%-qt5 : WAY too large (1GB download!) - tested in cygwin builds anyway
-
-:: the following uninstall and system upgrade was causing issues; appveyor's is relatively new
-:: Remove old packages that no longer exist to avoid an error
-:: %BASH% -lc "pacman --noconfirm --remove libcatgets catgets || true" || EXIT /B
-
-:: Remove incompatible packages 8.2.0-3 and 7.3.0-2 (mingw packaging bugs if you ask me!)
-:: %BASH% -lc "pacman --noconfirm --remove mingw-w64-x86_64-gcc-ada mingw-w64-x86_64-gcc-objc || true" || EXIT /B
-:: %BASH% -lc "pacman --noconfirm --remove mingw-w64-x86_64-gcc-ada mingw-w64-x86_64-gcc-objc || true" || EXIT /B
-
-:: Upgrade things
-:: %BASH% -lc "pacman --noconfirm -Syu %IGNORE%"                       || EXIT /B
-:: %BASH% -lc "pacman --noconfirm -Su %IGNORE%"                        || EXIT /B
-
-:: Updata the new key
-%BASH% -lc "curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"         || EXIT /B
-%BASH% -lc "curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"     || EXIT /B
-%BASH% -lc "pacman-key --verify msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"                           || EXIT /B
-%BASH% -lc "pacman --noconfirm -U --config <(echo) msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"            || EXIT /B
-:: Upgrade things
-%BASH% -lc "pacman --noconfirm -Sy"                                                                       || EXIT /B
-%BASH% -lc "pacman --noconfirm -Udd https://repo.msys2.org/msys/x86_64/pacman-5.2.2-5-x86_64.pkg.tar.xz"    || EXIT /B
-%BASH% -lc "pacman --noconfirm %PACKAGES%"                                                                || EXIT /B
diff --git a/build/appveyor/MING-appveyor-test.bat b/build/appveyor/MING-appveyor-test.bat
deleted file mode 100644
index 499c1ff..0000000
--- a/build/appveyor/MING-appveyor-test.bat
+++ /dev/null
@@ -1,22 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor              || EXIT /B
-CALL cl_banner_test.bat        || EXIT /B
-CALL cl_setenv.bat             || EXIT /B
-
-%BASH% -lc "cd %BUILDDIR% && ctest.exe -C %CONFIGURATION% --timeout 300 -VV -E '%DISABLED_TESTS%'" || EXIT /B
diff --git a/build/appveyor/MINGW-appveyor-full.bat b/build/appveyor/MINGW-appveyor-full.bat
new file mode 100644
index 0000000..f808c0d
--- /dev/null
+++ b/build/appveyor/MINGW-appveyor-full.bat
@@ -0,0 +1,126 @@
+::
+:: Licensed under the Apache License, Version 2.0 (the "License");
+:: you may not use this file except in compliance with the License.
+:: You may obtain a copy of the License at
+::
+::     http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing, software
+:: distributed under the License is distributed on an "AS IS" BASIS,
+:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+:: See the License for the specific language governing permissions and
+:: limitations under the License.
+::
+
+::
+:: Appveyor script for MINGW on MSYS2
+::
+
+::
+:: Installs third party packages we need for a cmake build
+::
+
+@ECHO ON
+SETLOCAL EnableDelayedExpansion
+
+CD build\appveyor || EXIT /B
+
+SET APPVEYOR_SCRIPTS=%APPVEYOR_BUILD_FOLDER%\build\appveyor
+SET BUILDDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM%
+SET INSTDIR=%APPVEYOR_BUILD_FOLDER%\..\install\%PROFILE%\%PLATFORM%
+SET SRCDIR=%APPVEYOR_BUILD_FOLDER%
+
+
+:: PLATFORM is x86 or x64
+:: NORM_PLATFORM is 32 or 64
+IF "%PLATFORM%" == "x86" (
+    SET NORM_PLATFORM=32
+) ELSE (
+    SET NORM_PLATFORM=64
+)
+
+:: PLATFORM = x86 means MINGWPLAT i686
+:: PLATFORM = x64 means MINGWPLAT x86_64
+IF "%PLATFORM%" == "x86" (
+  SET MINGWPLAT=i686
+) ELSE (
+  SET MINGWPLAT=x86_64
+)
+
+
+:: compiler and generator detection
+SET COMPILER=gcc
+SET GENERATOR=MinGW Makefiles
+
+
+SET BASH=C:\msys64\usr\bin\bash.exe
+!BASH! -lc "sed -i '/export PATH=\/mingw32\/bin/d' ~/.bash_profile && sed -i '/export PATH=\/mingw64\/bin/d' ~/.bash_profile && echo 'export PATH=/mingw%NORM_PLATFORM%/bin:$PATH' >> ~/.bash_profile" || EXIT /B
+
+SET BUILDDIR=%BUILDDIR:\=/%
+SET BUILDDIR=/c!BUILDDIR:~2!
+SET INSTDIR=%INSTDIR:\=/%
+SET INSTDIR=/c!INSTDIR:~2!
+SET SRCDIR=%SRCDIR:\=/%
+SET SRCDIR=/c!SRCDIR:~2!
+
+CALL win_showenv.bat || EXIT /B
+
+
+SET PACKAGES=^
+  base-devel ^
+  mingw-w64-x86_64-toolchain ^
+  bison ^
+  flex ^
+  make ^
+  mingw-w64-%MINGWPLAT%-boost ^
+  mingw-w64-%MINGWPLAT%-cmake ^
+  mingw-w64-%MINGWPLAT%-libevent ^
+  mingw-w64-%MINGWPLAT%-openssl ^
+  mingw-w64-%MINGWPLAT%-toolchain ^
+  mingw-w64-%MINGWPLAT%-zlib
+
+::mingw-w64-%MINGWPLAT%-qt5 : WAY too large (1GB download!) - tested in cygwin builds anyway
+
+:: Upgrade things
+%BASH% -lc "pacman --noconfirm -Syu %IGNORE%" || EXIT /B
+%BASH% -lc "pacman --noconfirm -Su %IGNORE%" || EXIT /B
+%BASH% -lc "pacman --noconfirm --needed -S %PACKAGES%" || EXIT /B
+
+
+:: These instructions are for a manual update of specific package versions.
+:: Fall back to this in case the above does not work anymore (broken upstream).
+:::: Updata the new key
+::%BASH% -lc "curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-1~20210213-2-any.pkg.tar.xz" || EXIT /B
+::%BASH% -lc "curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-1~20210213-2-any.pkg.tar.xz.sig" || EXIT /B
+::%BASH% -lc "pacman-key --verify msys2-keyring-1~20210213-2-any.pkg.tar.xz.sig" || EXIT /B
+::%BASH% -lc "pacman --noconfirm -U --config <(echo) msys2-keyring-1~20210213-2-any.pkg.tar.xz" || EXIT /B
+:::: Upgrade things
+::%BASH% -lc "pacman --noconfirm -Sy" || EXIT /B
+::%BASH% -lc "pacman --noconfirm -Udd https://repo.msys2.org/msys/x86_64/pacman-5.2.2-5-x86_64.pkg.tar.xz" || EXIT /B
+::%BASH% -lc "pacman --noconfirm --needed -S %PACKAGES%" || EXIT /B
+
+
+::
+:: Configure and build our software with cmake
+::
+
+SET CMAKEARGS=^
+  -G'%GENERATOR%' ^
+  -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^
+  -DCMAKE_INSTALL_PREFIX=%INSTDIR% ^
+  -DCMAKE_MAKE_PROGRAM=/mingw%NORM_PLATFORM%/bin/mingw32-make ^
+  -DCMAKE_C_COMPILER=/mingw%NORM_PLATFORM%/bin/gcc.exe ^
+  -DCMAKE_CXX_COMPILER=/mingw%NORM_PLATFORM%/bin/g++.exe ^
+  -DOPENSSL_ROOT_DIR=/mingw%NORM_PLATFORM% ^
+  -DWITH_PYTHON=OFF
+
+%BASH% -lc "mkdir -p %BUILDDIR% && cd %BUILDDIR% && cmake.exe %SRCDIR% %CMAKEARGS% && cmake --build . --config %CONFIGURATION% && cmake --install . --config %CONFIGURATION%" || EXIT /B
+
+
+::
+:: Execute our tests
+::
+
+SET DISABLED_TESTS_COMMAND=--exclude-regex '%DISABLED_TESTS%'
+
+%BASH% -lc "cd %BUILDDIR% && ctest.exe --build-config %CONFIGURATION% --timeout 300 --extra-verbose %DISABLED_TESTS_COMMAND%" || EXIT /B
diff --git a/build/appveyor/MSVC-appveyor-build.bat b/build/appveyor/MSVC-appveyor-build.bat
deleted file mode 100644
index 3d2bbee..0000000
--- a/build/appveyor/MSVC-appveyor-build.bat
+++ /dev/null
@@ -1,59 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor                           || EXIT /B
-CALL cl_banner_build.bat                    || EXIT /B
-CALL cl_setenv.bat                          || EXIT /B
-MKDIR "%BUILDDIR%"                          || EXIT /B
-CD "%BUILDDIR%"                             || EXIT /B
-
-:: When libraries cannot be found, things might have been updated
-:: so uncomment this and submit a pull request to see what's there
-:: now...
-:: DIR C:\Libraries
-:: DIR C:\Libraries\boost_1_69_0\lib*
-:: DIR C:\Libraries\boost_1_68_0\lib*
-:: DIR C:\Libraries\boost_1_67_0\lib*
-:: DIR C:\Libraries\boost_1_66_0\lib*
-:: DIR C:\Libraries\boost_1_65_0\lib*
-:: DIR C:\Libraries\boost_1_64_0\lib*
-:: DIR C:\Libraries\boost_1_63_0\lib*
-:: DIR C:\Libraries\boost_1_62_0\lib*
-:: DIR C:\Libraries\boost_1_61_0\lib*
-:: DIR C:\Libraries\boost_1_60_0\lib*
-
-@ECHO ON
-  cmake "%SRCDIR%" ^
-    -G"%GENERATOR%" ^
-	-DBISON_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_bison.exe ^
-    -DBOOST_ROOT="%BOOST_ROOT%" ^
-    -DBOOST_LIBRARYDIR="%BOOST_LIBRARYDIR%" ^
-    -DBUILD_SHARED_LIBS="%BUILD_SHARED_LIBS%" ^
-    -DCMAKE_BUILD_TYPE="%CONFIGURATION%" ^
-    -DCMAKE_INSTALL_PREFIX="%INSTDIR%" ^
-	-DFLEX_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_flex.exe ^
-    -DLIBEVENT_ROOT="%WIN3P%\libevent-%LIBEVENT_VERSION%-stable" ^
-    -DOPENSSL_ROOT_DIR="%OPENSSL_ROOT%" ^
-    -DOPENSSL_USE_STATIC_LIBS=OFF ^
-    -DZLIB_LIBRARY="%WIN3P%\zlib-inst\lib\zlib%ZLIB_LIB_SUFFIX%.lib" ^
-    -DZLIB_ROOT="%WIN3P%\zlib-inst" ^
-    -DWITH_PYTHON=%WITH_PYTHON%             || EXIT /B
-@ECHO OFF
-
-cmake --build . ^
-  --config "%CONFIGURATION%" ^
-  --target INSTALL                          || EXIT /B
diff --git a/build/appveyor/MSVC-appveyor-full.bat b/build/appveyor/MSVC-appveyor-full.bat
new file mode 100644
index 0000000..49a3f94
--- /dev/null
+++ b/build/appveyor/MSVC-appveyor-full.bat
@@ -0,0 +1,196 @@
+::
+:: Licensed under the Apache License, Version 2.0 (the "License");
+:: you may not use this file except in compliance with the License.
+:: You may obtain a copy of the License at
+::
+::     http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing, software
+:: distributed under the License is distributed on an "AS IS" BASIS,
+:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+:: See the License for the specific language governing permissions and
+:: limitations under the License.
+::
+
+::
+:: Appveyor script for MSVC
+::
+
+::
+:: Installs (or builds) third party packages we need
+::
+
+@ECHO ON
+SETLOCAL EnableDelayedExpansion
+
+CD build\appveyor || EXIT /B
+
+SET APPVEYOR_SCRIPTS=%APPVEYOR_BUILD_FOLDER%\build\appveyor
+SET BUILDDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM%
+SET INSTDIR=%APPVEYOR_BUILD_FOLDER%\..\install\%PROFILE%\%PLATFORM%
+SET SRCDIR=%APPVEYOR_BUILD_FOLDER%
+
+
+IF "%PROFILE%" == "MSVC2015" (
+  IF "%PLATFORM%" == "x86" (
+    CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 || EXIT /B
+  ) ELSE (
+    CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 || EXIT /B
+    CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64 || EXIT /B
+  )
+) ELSE IF "%PROFILE%" == "MSVC2017" (
+  IF "%PLATFORM%" == "x86" (
+    CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" || EXIT /B
+  ) ELSE (
+    CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" || EXIT /B
+  )
+) ELSE IF "%PROFILE%" == "MSVC2019" (
+  IF "%PLATFORM%" == "x86" (
+    CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat" || EXIT /B
+  ) ELSE (
+    CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" || EXIT /B
+  )
+) ELSE (
+  ECHO Unsupported PROFILE=%PROFILE% or PLATFORM=%PLATFORM%
+  EXIT /B 1
+)
+
+
+:: compiler and generator detection
+IF /i "%PLATFORM%" == "x64" SET GENARCH= Win64
+IF "%PROFILE%" == "MSVC2015" (
+  SET GENERATOR=Visual Studio 14 2015!GENARCH!
+  SET COMPILER=vc140
+) ELSE IF "%PROFILE%" == "MSVC2017" (
+  SET GENERATOR=Visual Studio 15 2017!GENARCH!
+  SET COMPILER=vc141
+) ELSE IF "%PROFILE%" == "MSVC2019" (
+  SET GENERATOR=Visual Studio 16 2019!GENARCH!
+  SET COMPILER=vc142
+) ELSE (
+  ECHO [error] unable to determine the CMake generator and compiler to use from MSVC profile %PROFILE%
+  EXIT /B 1
+)
+
+:: PLATFORM is x86 or x64
+:: NORM_PLATFORM is 32 or 64
+IF "%PLATFORM%" == "x86" (
+    SET NORM_PLATFORM=32
+) ELSE (
+    SET NORM_PLATFORM=64
+)
+
+:: FindBoost needs forward slashes so cmake doesn't see something as an escaped character
+SET BOOST_ROOT=C:/Libraries/boost_%BOOST_VERSION:.=_%
+SET BOOST_LIBRARYDIR=!BOOST_ROOT!/lib%NORM_PLATFORM%-msvc-%COMPILER:~-3,2%.%COMPILER:~-1,1%
+SET OPENSSL_ROOT=C:\OpenSSL-Win%NORM_PLATFORM%
+SET WIN3P=%APPVEYOR_BUILD_FOLDER%\thirdparty
+
+IF "%PYTHON_VERSION%" == "" (
+  SET WITH_PYTHON=OFF
+) ELSE (
+  SET WITH_PYTHON=ON
+  IF /i "%PLATFORM%" == "x64" (SET PTEXT=-x64)
+  SET PATH=C:\Python%PYTHON_VERSION:.=%!PTEXT!\scripts;C:\Python%PYTHON_VERSION:.=%!PTEXT!;!PATH!
+)
+
+IF "%CONFIGURATION%" == "Debug" (SET ZLIB_LIB_SUFFIX=d)
+
+IF NOT "%QT_VERSION%" == "" (
+  IF /i "%PLATFORM%" == "x64" (SET QTEXT=_64)
+  SET PATH=C:\Qt\%QT_VERSION%\%PROFILE%!QTEXT!\bin;!PATH!
+)
+
+
+CALL win_showenv.bat || EXIT /B
+MKDIR "%WIN3P%" || EXIT /B
+
+choco feature enable -n allowGlobalConfirmation || EXIT /B
+
+:: Things to install when NOT running in appveyor:
+IF "%APPVEYOR_BUILD_ID%" == "" (
+    cup -y chocolatey || EXIT /B
+    cinst -y curl || EXIT /B
+    cinst -y 7zip || EXIT /B
+    cinst -y python3 || EXIT /B
+    cinst -y openssl.light || EXIT /B
+)
+
+cinst -y jdk8 || EXIT /B
+cinst -y winflexbison3 || EXIT /B
+
+:: zlib - not available through chocolatey
+CD "%APPVEYOR_SCRIPTS%" || EXIT /B
+call build-zlib.bat || EXIT /B
+
+:: libevent - not available through chocolatey
+CD "%APPVEYOR_SCRIPTS%" || EXIT /B
+call build-libevent.bat || EXIT /B
+
+:: python packages (correct path to pip set above)
+pip.exe ^
+    install backports.ssl_match_hostname ^
+            ipaddress ^
+            six ^
+            tornado ^
+            twisted || EXIT /B
+
+:: Adobe Flex SDK 4.6 for ActionScript
+MKDIR "C:\Adobe\Flex\SDK\4.6" || EXIT /B
+appveyor DownloadFile http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip -FileName C:\Adobe\Flex\SDK\4.6\SDK.zip || EXIT /B
+CD "C:\Adobe\Flex\SDK\4.6" || EXIT /B
+7z x SDK.zip || EXIT /B
+SETX FLEX_HOME "C:\Adobe\Flex\SDK\4.6"
+
+
+::
+:: Configure and build our software with cmake
+::
+
+MKDIR "%BUILDDIR%" || EXIT /B
+CD "%BUILDDIR%" || EXIT /B
+
+:: When libraries cannot be found, things might have been updated
+:: so uncomment this and submit a pull request to see what's there
+:: now...
+:: DIR C:\Libraries
+:: DIR C:\Libraries\boost_1_69_0\lib*
+:: DIR C:\Libraries\boost_1_68_0\lib*
+:: DIR C:\Libraries\boost_1_67_0\lib*
+:: DIR C:\Libraries\boost_1_66_0\lib*
+:: DIR C:\Libraries\boost_1_65_0\lib*
+:: DIR C:\Libraries\boost_1_64_0\lib*
+:: DIR C:\Libraries\boost_1_63_0\lib*
+:: DIR C:\Libraries\boost_1_62_0\lib*
+:: DIR C:\Libraries\boost_1_61_0\lib*
+:: DIR C:\Libraries\boost_1_60_0\lib*
+
+cmake.exe "%SRCDIR%" ^
+  -G"%GENERATOR%" ^
+  -DBISON_EXECUTABLE="C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_bison.exe" ^
+  -DBOOST_ROOT="%BOOST_ROOT%" ^
+  -DBOOST_LIBRARYDIR="%BOOST_LIBRARYDIR%" ^
+  -DBUILD_SHARED_LIBS="%BUILD_SHARED_LIBS%" ^
+  -DCMAKE_BUILD_TYPE="%CONFIGURATION%" ^
+  -DCMAKE_INSTALL_PREFIX="%INSTDIR%" ^
+  -DFLEX_EXECUTABLE="C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_flex.exe" ^
+  -DLIBEVENT_ROOT="%WIN3P%\libevent-%LIBEVENT_VERSION%-stable" ^
+  -DOPENSSL_ROOT_DIR="%OPENSSL_ROOT%" ^
+  -DOPENSSL_USE_STATIC_LIBS=OFF ^
+  -DZLIB_LIBRARY="%WIN3P%\zlib-inst\lib\zlib%ZLIB_LIB_SUFFIX%.lib" ^
+  -DZLIB_ROOT="%WIN3P%\zlib-inst" ^
+  -DWITH_PYTHON=%WITH_PYTHON% || EXIT /B
+
+cmake.exe --build . --config "%CONFIGURATION%" || EXIT /B
+
+cmake.exe --install . --config "%CONFIGURATION%" || EXIT /B
+
+::
+:: Execute our tests
+::
+
+:: Add directories to the path to find DLLs of third party libraries so tests run properly!
+SET PATH=%BOOST_LIBRARYDIR:/=\%;%OPENSSL_ROOT%\bin;%WIN3P%\zlib-inst\bin;%PATH%
+SET DISABLED_TESTS_COMMAND=--exclude-regex '%DISABLED_TESTS%'
+
+ctest.exe --build-config %CONFIGURATION% --timeout 300 --extra-verbose %DISABLED_TESTS_COMMAND% || EXIT /B
diff --git a/build/appveyor/MSVC-appveyor-install.bat b/build/appveyor/MSVC-appveyor-install.bat
deleted file mode 100644
index a4c49fe..0000000
--- a/build/appveyor/MSVC-appveyor-install.bat
+++ /dev/null
@@ -1,64 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-::
-:: Appveyor install script for MSVC
-:: Installs (or builds) third party packages we need
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor                         || EXIT /B
-CALL cl_banner_install.bat                || EXIT /B
-CALL cl_setenv.bat                        || EXIT /B
-CALL cl_showenv.bat                       || EXIT /B
-MKDIR "%WIN3P%"                           || EXIT /B
-
-choco feature enable -n allowGlobalConfirmation || EXIT /B
-
-:: Things to install when NOT running in appveyor:
-IF "%APPVEYOR_BUILD_ID%" == "" (
-    cup -y chocolatey                     || EXIT /B
-    cinst -y curl                         || EXIT /B
-    cinst -y 7zip                         || EXIT /B
-    cinst -y python3                      || EXIT /B
-    cinst -y openssl.light                || EXIT /B
-)
-
-cinst -y jdk8                             || EXIT /B
-cinst -y winflexbison3                    || EXIT /B
-
-:: zlib - not available through chocolatey
-CD "%APPVEYOR_SCRIPTS%"                   || EXIT /B
-call build-zlib.bat                       || EXIT /B
-
-:: libevent - not available through chocolatey
-CD "%APPVEYOR_SCRIPTS%"                   || EXIT /B
-call build-libevent.bat                   || EXIT /B
-
-:: python packages (correct path to pip set in cl_setenv.bat)
-pip.exe ^
-    install backports.ssl_match_hostname ^
-            ipaddress ^
-            six ^
-            tornado ^
-            twisted                       || EXIT /B
-
-:: Adobe Flex SDK 4.6 for ActionScript
-MKDIR "C:\Adobe\Flex\SDK\4.6"             || EXIT /B
-appveyor DownloadFile http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip -FileName C:\Adobe\Flex\SDK\4.6\SDK.zip || EXIT /B
-CD "C:\Adobe\Flex\SDK\4.6"                || EXIT /B
-7z x SDK.zip                              || EXIT /B
-SETX FLEX_HOME "C:\Adobe\Flex\SDK\4.6"
diff --git a/build/appveyor/MSVC-appveyor-test.bat b/build/appveyor/MSVC-appveyor-test.bat
deleted file mode 100644
index 3594579..0000000
--- a/build/appveyor/MSVC-appveyor-test.bat
+++ /dev/null
@@ -1,32 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-@ECHO ON
-SETLOCAL EnableDelayedExpansion
-CD build\appveyor              || EXIT /B
-CALL cl_banner_test.bat        || EXIT /B
-CALL cl_setenv.bat             || EXIT /B
-CD "%BUILDDIR%"                || EXIT /B
-
-DIR C:\libraries
-DIR C:\libraries\boost_1_59_0
-DIR C:\libraries\boost_1_60_0
-DIR C:\libraries\boost_1_62_0
-DIR C:\libraries\boost_1_63_0
-DIR C:\libraries\boost_1_64_0
-
-:: Add directories to the path to find DLLs of third party libraries so tests run properly!
-SET PATH=%BOOST_LIBRARYDIR:/=\%;%OPENSSL_ROOT%\bin;%WIN3P%\zlib-inst\bin;%PATH%
-
-ctest -C %CONFIGURATION% --timeout 300 -VV -E "(%DISABLED_TESTS%)" || EXIT /B
diff --git a/build/appveyor/MSYS-appveyor-build.bat b/build/appveyor/MSYS-appveyor-build.bat
deleted file mode 100644
index 4401729..0000000
--- a/build/appveyor/MSYS-appveyor-build.bat
+++ /dev/null
@@ -1,48 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor                           || EXIT /B
-CALL cl_banner_build.bat                    || EXIT /B
-CALL cl_setenv.bat                          || EXIT /B
-
-SET BASH=C:\msys64\usr\bin\bash
-SET CMAKE=/c/msys64/mingw64/bin/cmake.exe
-
-@ECHO ON
-SET CMAKEARGS=-G\"%GENERATOR%\" ^
-  -DBoost_DEBUG=ON ^
-  -DBoost_NAMESPACE=libboost ^
-  -DBOOST_INCLUDEDIR=%BOOST_INCLUDEDIR% ^
-  -DBOOST_LIBRARYDIR=%BOOST_LIBRARYDIR% ^
-  -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^
-  -DCMAKE_C_COMPILER=gcc.exe ^
-  -DCMAKE_CXX_COMPILER=g++.exe ^
-  -DCMAKE_MAKE_PROGRAM=make.exe ^
-  -DCMAKE_INSTALL_PREFIX=%INSTDIR_MSYS% ^
-  -DLIBEVENT_ROOT=%LIBEVENT_ROOT% ^
-  -DOPENSSL_LIBRARIES=%OPENSSL_LIBRARIES% ^
-  -DOPENSSL_ROOT_DIR=%OPENSSL_ROOT% ^
-  -DOPENSSL_USE_STATIC_LIBS=ON ^
-  -DWITH_BOOST_STATIC=ON ^
-  -DWITH_JAVA=OFF ^
-  -DWITH_LIBEVENT=ON ^
-  -DWITH_PYTHON=%WITH_PYTHON% ^
-  -DWITH_SHARED_LIB=OFF ^
-  -DWITH_STATIC_LIB=ON
-
-%BASH% -lc "mkdir %BUILDDIR_MSYS% && cd %BUILDDIR_MSYS% && %CMAKE% %SRCDIR_MSYS% %CMAKEARGS% && %CMAKE% --build . --config %CONFIGURATION% --target install" || EXIT /B
-@ECHO OFF
diff --git a/build/appveyor/MSYS-appveyor-full.bat b/build/appveyor/MSYS-appveyor-full.bat
new file mode 100644
index 0000000..082ffdb
--- /dev/null
+++ b/build/appveyor/MSYS-appveyor-full.bat
@@ -0,0 +1,98 @@
+::
+:: Licensed under the Apache License, Version 2.0 (the "License");
+:: you may not use this file except in compliance with the License.
+:: You may obtain a copy of the License at
+::
+::     http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing, software
+:: distributed under the License is distributed on an "AS IS" BASIS,
+:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+:: See the License for the specific language governing permissions and
+:: limitations under the License.
+::
+
+::
+:: Appveyor script for MSYS
+::
+
+::
+:: Installs third party packages we need for a cmake build
+::
+
+@ECHO ON
+SETLOCAL EnableDelayedExpansion
+
+CD build\appveyor || EXIT /B
+
+SET APPVEYOR_SCRIPTS=%APPVEYOR_BUILD_FOLDER%\build\appveyor
+SET BUILDDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM%
+SET INSTDIR=%APPVEYOR_BUILD_FOLDER%\..\install\%PROFILE%\%PLATFORM%
+SET SRCDIR=%APPVEYOR_BUILD_FOLDER%
+
+
+ECHO Unsupported PROFILE=%PROFILE% or PLATFORM=%PLATFORM%
+EXIT /B 1
+
+
+SET BASH=C:\msys64\usr\bin\bash
+SET CMAKE=/c/msys64/mingw64/bin/cmake.exe
+
+
+CALL win_showenv.bat || EXIT /B
+
+SET PACKAGES=^
+  base-devel ^
+  mingw-w64-x86_64-toolchain ^
+  bison ^
+  flex ^
+  make ^
+  mingw-w64-x86_64-cmake ^
+  mingw-w64-x86_64-libevent ^
+  mingw-w64-x86_64-openssl ^
+  mingw-w64-x86_64-zlib
+
+:: Upgrade things
+%BASH% -lc "pacman --noconfirm -Syu %IGNORE%" || EXIT /B
+%BASH% -lc "pacman --noconfirm -Su %IGNORE%" || EXIT /B
+%BASH% -lc "pacman --noconfirm --needed -S %PACKAGES%" || EXIT /B
+
+
+::
+:: Configure and build our software with cmake
+::
+
+SET CMAKEARGS=^
+  -G'%GENERATOR%' ^
+  -DBoost_DEBUG=ON ^
+  -DBoost_NAMESPACE=libboost ^
+  -DBOOST_INCLUDEDIR=%BOOST_INCLUDEDIR% ^
+  -DBOOST_LIBRARYDIR=%BOOST_LIBRARYDIR% ^
+  -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^
+  -DCMAKE_C_COMPILER=gcc.exe ^
+  -DCMAKE_CXX_COMPILER=g++.exe ^
+  -DCMAKE_MAKE_PROGRAM=make.exe ^
+  -DCMAKE_INSTALL_PREFIX=%INSTDIR_MSYS% ^
+  -DLIBEVENT_ROOT=%LIBEVENT_ROOT% ^
+  -DOPENSSL_LIBRARIES=%OPENSSL_LIBRARIES% ^
+  -DOPENSSL_ROOT_DIR=%OPENSSL_ROOT% ^
+  -DOPENSSL_USE_STATIC_LIBS=ON ^
+  -DWITH_BOOST_STATIC=ON ^
+  -DWITH_JAVA=OFF ^
+  -DWITH_LIBEVENT=ON ^
+  -DWITH_PYTHON=%WITH_PYTHON% ^
+  -DWITH_SHARED_LIB=OFF ^
+  -DWITH_STATIC_LIB=ON
+
+%BASH% -lc "mkdir %BUILDDIR% && cd %BUILDDIR% && %CMAKE% %SRCDIR_MSYS% %CMAKEARGS% && %CMAKE% --build . --config %CONFIGURATION% && %CMAKE% --install . --config %CONFIGURATION%" || EXIT /B
+
+
+::
+:: Execute our tests
+::
+
+:: This test randomly fails on mingw; see Jira THRIFT-4106
+SET DISABLED_TESTS=(concurrency_test)
+SET DISABLED_TESTS_COMMAND=--exclude-regex '%DISABLED_TESTS%'
+
+%BASH% -lc "cd %BUILDDIR% && ctest.exe --build-config %CONFIGURATION% --timeout 300 --extra-verbose %DISABLED_TESTS_COMMAND%" || EXIT /B
diff --git a/build/appveyor/MSYS-appveyor-install.bat b/build/appveyor/MSYS-appveyor-install.bat
deleted file mode 100644
index a818df3..0000000
--- a/build/appveyor/MSYS-appveyor-install.bat
+++ /dev/null
@@ -1,48 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-::
-:: Appveyor install script for MSYS
-:: Installs (or builds) third party packages we need
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor                          || EXIT /B
-CALL cl_banner_install.bat                 || EXIT /B
-CALL cl_setenv.bat                         || EXIT /B
-CALL cl_showenv.bat                        || EXIT /B
-
-:: We're going to keep boost at a version cmake understands
-SET BOOSTPKG=mingw-w64-x86_64-boost-1.64.0-3-any.pkg.tar.xz
-SET IGNORE=--ignore mingw-w64-x86_64-boost
-
-SET PACKAGES=^
-  --needed -S bison flex make ^
-  mingw-w64-x86_64-cmake ^
-  mingw-w64-x86_64-libevent ^
-  mingw-w64-x86_64-openssl ^
-  mingw-w64-x86_64-toolchain ^
-  mingw-w64-x86_64-zlib
-
-%BASH% -lc "pacman --noconfirm -Syu %IGNORE%" || EXIT /B
-%BASH% -lc "pacman --noconfirm -Su %IGNORE%"  || EXIT /B
-%BASH% -lc "pacman --noconfirm %PACKAGES%"    || EXIT /B
-
-:: Install a slightly older boost (1.64.0) as cmake 3.10
-:: does not have built-in dependencies for boost 1.66.0 yet
-:: -- this cuts down on build warning output --
-%BASH% -lc "wget http://repo.msys2.org/mingw/x86_64/%BOOSTPKG% && pacman --noconfirm --needed -U %BOOSTPKG% && rm %BOOSTPKG%" || EXIT /B
-
diff --git a/build/appveyor/MSYS-appveyor-test.bat b/build/appveyor/MSYS-appveyor-test.bat
deleted file mode 100644
index 0f37ec5..0000000
--- a/build/appveyor/MSYS-appveyor-test.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-CD build\appveyor              || EXIT /B
-CALL cl_banner_test.bat        || EXIT /B
-CALL cl_setenv.bat             || EXIT /B
-CD "%BUILDDIR%"                || EXIT /B
-
-:: randomly fails on mingw; see Jira THRIFT-4106
-SET DISABLED_TESTS=concurrency_test
-
-%BASH% -lc "cd %BUILDDIR_MSYS% && ctest.exe -C %CONFIGURATION% --timeout 300 -VV -E '(%DISABLED_TESTS%)'" || EXIT /B
diff --git a/build/appveyor/README.md b/build/appveyor/README.md
index 1a2aa30..a3d3071 100644
--- a/build/appveyor/README.md
+++ b/build/appveyor/README.md
@@ -12,23 +12,9 @@
 limitations under the License.
 -->
 
-# Appveyor Build
+# AppVeyor Build
 
-Appveyor is capable of building MSVC 2010 through 2015 as well as
-having the latest MSYS2/MinGW 64-bit environment.  It has many versions
-of boost and python installed as well.  See what appveyor has
+AppVeyor is capable of building MSVC as well as MSYS2, MinGW and Cygwin builds targeting the MS Windows platform. It has many versions of boost and python installed as well. See what appveyor has
 [installed on build workers](https://www.appveyor.com/docs/installed-software/).
 
-We run a matrix build on Appveyor and build the following combinations:
-
-* MinGW x64 (gcc 6.3.0)
-* MSVC 2010 x86, an older boost, an older python
-* MSVC 2015 x86/x64, the latest boost, the latest python
-* MSYS2 x64 (gcc 6.3.0) - this is a work in progress
-
-The Appveyor script takes the first four letters from the PROFILE specified in
-the environment stanza and runs these scripts in order:
-
-????-appveyor-install.bat will install third party libraries and set up the environment
-????-appveyor-build.bat will build with cmake
-????-appveyor-test.bat will run ctest
+We run a matrix build on AppVeyor. See appveyor.yml for more details.
diff --git a/build/appveyor/build-libevent.bat b/build/appveyor/build-libevent.bat
index 64b635b..939daf5 100644
--- a/build/appveyor/build-libevent.bat
+++ b/build/appveyor/build-libevent.bat
@@ -18,20 +18,20 @@
 SET URL=https://github.com/libevent/libevent/releases/download/release-%LIBEVENT_VERSION%-stable/%URLFILE%
 
 :: Download - support running a local build or a build in appveyor
-CD "%WIN3P%"                                     || EXIT /B
+CD "%WIN3P%" || EXIT /B
 IF "%APPVEYOR_BUILD_ID%" == "" (
     curl -L -f -o "%URLFILE%" "%URL%"
 ) ELSE (
     appveyor DownloadFile "%URL%"
 )
-7z x "%URLFILE%" -so | 7z x -si -ttar > nul      || EXIT /B
-CD "libevent-%LIBEVENT_VERSION%-stable"          || EXIT /B
-nmake -f Makefile.nmake static_libs              || EXIT /B
+7z x "%URLFILE%" -so | 7z x -si -ttar > nul || EXIT /B
+CD "libevent-%LIBEVENT_VERSION%-stable" || EXIT /B
+nmake -f Makefile.nmake static_libs || EXIT /B
 
 :: in libevent 2.0 there is no nmake subdirectory in WIN32-Code, but in 2.1 there is
-mkdir lib                                        || EXIT /B
-move *.lib lib\                                  || EXIT /B
+mkdir lib || EXIT /B
+move *.lib lib\ || EXIT /B
 move WIN32-Code\event2\* include\event2\         || move WIN32-Code\nmake\event2\* include\event2\ || EXIT /B
-move *.h include\                                || EXIT /B
+move *.h include\ || EXIT /B
 
 ENDLOCAL
diff --git a/build/appveyor/build-zlib.bat b/build/appveyor/build-zlib.bat
index 9195726..367ef98 100644
--- a/build/appveyor/build-zlib.bat
+++ b/build/appveyor/build-zlib.bat
@@ -25,7 +25,7 @@
 SET FURL=http://zlib.net/fossils/%URLFILE%
 
 :: Download - support running a local build or a build in appveyor
-CD "%WIN3P%"                                                     || EXIT /B
+CD "%WIN3P%" || EXIT /B
 IF "%APPVEYOR_BUILD_ID%" == "" (
     curl -L -f -o "%URLFILE%" "%URL%"
     IF ERRORLEVEL 1 (
@@ -34,23 +34,23 @@
 ) ELSE (
     appveyor DownloadFile "%URL%"
     IF ERRORLEVEL 1 (
-        appveyor DownloadFile "%FURL%"                           || EXIT /B
+        appveyor DownloadFile "%FURL%" || EXIT /B
     )
 )
-7z x "%URLFILE%" -so | 7z x -si -ttar > nul                      || EXIT /B
+7z x "%URLFILE%" -so | 7z x -si -ttar > nul || EXIT /B
 
 :: Generate
-MKDIR "%BUILDDIR%"                                               || EXIT /B
-CD "%BUILDDIR%"                                                  || EXIT /B
+MKDIR "%BUILDDIR%" || EXIT /B
+CD "%BUILDDIR%" || EXIT /B
 cmake "%SRCDIR%" ^
       -G"NMake Makefiles" ^
       -DCMAKE_INSTALL_PREFIX="%INSTDIR%" ^
-      -DCMAKE_BUILD_TYPE="%CONFIGURATION%"                       || EXIT /B
+      -DCMAKE_BUILD_TYPE="%CONFIGURATION%" || EXIT /B
 
 :: Build
-nmake /fMakefile install                                         || EXIT /B
+nmake /fMakefile install || EXIT /B
 IF "%CONFIGURATION%" == "Debug" (
-    COPY "%BUILDDIR%\zlibd.pdb" "%INSTDIR%\bin\"                 || EXIT /B
+    COPY "%BUILDDIR%\zlibd.pdb" "%INSTDIR%\bin\" || EXIT /B
 )
 
 ENDLOCAL
diff --git a/build/appveyor/cl_banner_apache_thrift.bat b/build/appveyor/cl_banner_apache_thrift.bat
deleted file mode 100644
index 78f2a2a..0000000
--- a/build/appveyor/cl_banner_apache_thrift.bat
+++ /dev/null
@@ -1,24 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-:: A visual indicator in a large log helps you locate things when scanning
-:: http://www.patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Apache%20Thrift
-
-ECHO/
-ECHO    ___                 __         ________       _ _____
-ECHO   / _ | ___  ___ _____/ /  ___   /_  __/ /  ____(_) _/ /_
-ECHO  / __ |/ _ \/ _ `/ __/ _ \/ -_)   / / / _ \/ __/ / _/ __/
-ECHO /_/ |_/ .__/\_,_/\__/_//_/\__/   /_/ /_//_/_/ /_/_/ \__/
-ECHO      /_/
-ECHO/
diff --git a/build/appveyor/cl_banner_build.bat b/build/appveyor/cl_banner_build.bat
deleted file mode 100644
index 60272f3..0000000
--- a/build/appveyor/cl_banner_build.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-:: A visual indicator in a large log helps you locate things when scanning
-:: http://www.patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Build
-
-ECHO/
-ECHO    ___       _ __   __
-ECHO   / _ )__ __(_) /__/ /
-ECHO  / _  / // / / / _  /     @@@ BUILD
-ECHO /____/\_,_/_/_/\_,_/
-ECHO/
diff --git a/build/appveyor/cl_banner_install.bat b/build/appveyor/cl_banner_install.bat
deleted file mode 100644
index fde3da2..0000000
--- a/build/appveyor/cl_banner_install.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-:: A visual indicator in a large log helps you locate things when scanning
-:: http://www.patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Install
-
-ECHO/
-ECHO    ____         __       ____
-ECHO   /  _/__  ___ / /____ _/ / /
-ECHO  _/ // _ \(_-^</ __/ _ \/ / /     @@@ INSTALL
-ECHO /___/_//_/___/\__/\_,_/_/_/
-ECHO/
diff --git a/build/appveyor/cl_banner_test.bat b/build/appveyor/cl_banner_test.bat
deleted file mode 100644
index 44e2d10..0000000
--- a/build/appveyor/cl_banner_test.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-:: A visual indicator in a large log helps you locate things when scanning
-:: http://www.patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Test
-
-ECHO/
-ECHO  ______        __
-ECHO /_  __/__ ___ / /_
-ECHO  / / / -_^|_-^</ __/     @@@ TEST
-ECHO /_/  \__/___/\__/
-ECHO/
diff --git a/build/appveyor/cl_setcompiler.bat b/build/appveyor/cl_setcompiler.bat
deleted file mode 100644
index 733ffc5..0000000
--- a/build/appveyor/cl_setcompiler.bat
+++ /dev/null
@@ -1,63 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-::
-:: Detect the compiler edition we're building in.
-:: Set the COMPILER environment variable to one of:
-::   gcc   = MinGW / MSYS2 and gcc toolchain
-::   vc100 = Visual Studio 2010
-::   vc110 = Visual Studio 2012
-::   vc120 = Visual Studio 2013
-::   vc140 = Visual Studio 2015
-::   vc141 = Visual Studio 2017
-::
-:: Honors any existing COMPILER environment variable
-::   setting instead of overwriting it, to allow it
-::   to be forced if needed.
-::
-:: Sets ERRORLEVEL to 0 if COMPILER can be determined,
-::                 to 1 if it cannot.
-::
-
-IF DEFINED COMPILER (
-  ECHO [warn ] using existing environment variable COMPILER
-  EXIT /B 0
-)
-
-IF NOT "%PROFILE:~0,4%" == "MSVC" (
-  SET COMPILER=gcc
-) ELSE (
-  CALL :CHECK 16
-  IF !ERRORLEVEL! == 0 (SET COMPILER=vc100)
-  CALL :CHECK 17
-  IF !ERRORLEVEL! == 0 (SET COMPILER=vc110)
-  CALL :CHECK 18
-  IF !ERRORLEVEL! == 0 (SET COMPILER=vc120)
-  CALL :CHECK 19.0
-  IF !ERRORLEVEL! == 0 (SET COMPILER=vc140)
-  CALL :CHECK 19.1
-  IF !ERRORLEVEL! == 0 (SET COMPILER=vc141)
-)
-
-IF NOT DEFINED COMPILER (
-  ECHO [error] unable to determine the compiler edition
-  EXIT /B 1
-)
-
-ECHO [info ] detected compiler edition    %COMPILER%
-EXIT /B 0
-
-:CHECK
-cl /? 2>&1 | findstr /C:"Version %1%" > nul
-EXIT /B
diff --git a/build/appveyor/cl_setenv.bat b/build/appveyor/cl_setenv.bat
deleted file mode 100644
index 98931a6..0000000
--- a/build/appveyor/cl_setenv.bat
+++ /dev/null
@@ -1,122 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-@ECHO OFF
-
-IF "%PROFILE%" == "MSVC2012" (
-  CALL "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" %PLATFORM%
-) ELSE IF "%PROFILE%" == "MSVC2013" (
-  CALL "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %PLATFORM%
-) ELSE IF "%PROFILE%" == "MSVC2015" (
-  CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %PLATFORM%
-) ELSE IF "%PROFILE%" == "MSVC2017" (
-  CALL :SETUPNEWERMSVC    || EXIT /B
-) ELSE IF "%PROFILE%" == "MINGW" (
-  REM Supported, nothing special to do here.
-) ELSE IF "%PROFILE%" == "CYGWIN" (
-  REM Supported, nothing special to do here.
-) ELSE (
-  ECHO Unsupported PROFILE=%PROFILE% or PLATFORM=%PLATFORM%
-  EXIT /B 1
-)
-
-CALL cl_setcompiler.bat   || EXIT /B
-CALL cl_setgenerator.bat  || EXIT /B
-
-SET APPVEYOR_SCRIPTS=%APPVEYOR_BUILD_FOLDER%\build\appveyor
-SET BUILDDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM%
-SET INSTDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM%
-SET SRCDIR=%APPVEYOR_BUILD_FOLDER%
-
-:: PLATFORM is x64 or x86
-:: NORM_PLATFORM is 64 or 32
-SET NORM_PLATFORM=%PLATFORM:~-2,2%
-IF "%NORM_PLATFORM%" == "86" (SET NORM_PLATFORM=32)
-
-IF "%PROFILE:~0,4%" == "MSVC" (
-
-  :: FindBoost needs forward slashes so cmake doesn't see something as an escaped character
-  SET BOOST_ROOT=C:/Libraries/boost_%BOOST_VERSION:.=_%
-  SET BOOST_LIBRARYDIR=!BOOST_ROOT!/lib%NORM_PLATFORM%-msvc-%COMPILER:~-3,2%.%COMPILER:~-1,1%
-  SET OPENSSL_ROOT=C:\OpenSSL-Win%NORM_PLATFORM%
-  SET WIN3P=%APPVEYOR_BUILD_FOLDER%\thirdparty
-
-  IF "%PYTHON_VERSION%" == "" (
-    SET WITH_PYTHON=OFF
-  ) ELSE (
-    SET WITH_PYTHON=ON
-    IF /i "%PLATFORM%" == "x64" SET PTEXT=-x64
-    SET PATH=C:\Python%PYTHON_VERSION:.=%!PTEXT!\scripts;C:\Python%PYTHON_VERSION:.=%!PTEXT!;!PATH!
-  )
-  IF "%CONFIGURATION%" == "Debug" (SET ZLIB_LIB_SUFFIX=d)
-
-  IF NOT "%QT_VERSION%" == "" (
-    IF /i "%PLATFORM%" == "x64" SET QTEXT=_64
-    SET PATH=C:\Qt\%QT_VERSION%\%PROFILE%!QTEXT!\bin;!PATH!
-  )
-
-) ELSE IF "%PROFILE:~0,4%" == "MING" (
-
-  :: PLATFORM = x86 means MINGWPLAT i686
-  :: PLATFORM = x64 means MINGWPLAT x86_64
-  SET MINGWPLAT=x86_64
-  IF "%PLATFORM%" == "x86" (SET MINGWPLAT=i686)
-
-  SET BASH=C:\msys64\usr\bin\bash.exe
-  !BASH! -lc "sed -i '/export PATH=\/mingw32\/bin/d' ~/.bash_profile && sed -i '/export PATH=\/mingw64\/bin/d' ~/.bash_profile && echo 'export PATH=/mingw%NORM_PLATFORM%/bin:$PATH' >> ~/.bash_profile" || EXIT /B
-
-  SET BUILDDIR=%BUILDDIR:\=/%
-  SET BUILDDIR=/c!BUILDDIR:~2!
-  SET INSTDIR=%INSTDIR:\=/%
-  SET INSTDIR=/c!INSTDIR:~2!
-  SET SRCDIR=%SRCDIR:\=/%
-  SET SRCDIR=/c!SRCDIR:~2!
-
-) ELSE IF "%PROFILE:~0,4%" == "CYGW" (
-
-  SET CYGWINROOT=C:\cygwin
-  IF "%PLATFORM%" == "x64" (SET CYGWINROOT=!CYGWINROOT!64)
-
-  SET BASH=!CYGWINROOT!\bin\bash.exe
-  SET SETUP=!CYGWINROOT!\setup-x86
-  IF "%PLATFORM%" == "x64" (SET SETUP=!SETUP!_64)
-  SET SETUP=!SETUP!.exe
-
-  SET BUILDDIR=%BUILDDIR:\=/%
-  SET BUILDDIR=/cygdrive/c!BUILDDIR:~2!
-  SET INSTDIR=%INSTDIR:\=/%
-  SET INSTDIR_CYG=/cygdrive/c!INSTDIR:~2!
-  SET SRCDIR=%SRCDIR:\=/%
-  SET SRCDIR=/cygdrive/c!SRCDIR:~2!
-
-)
-
-GOTO :EOF
-
-:SETUPNEWERMSVC
-  :: If VsDevCmd.bat has already executed, as is the case in the
-  :: msvc2017 docker container, skip this...
-  IF NOT DEFINED VSCMD_VER (
-    FOR /F "USEBACKQ TOKENS=*" %%i IN (`call "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version "[15.0,16.0)" -property installationPath`) DO (
-      IF "%MSVCROOT%" == "" (SET MSVCROOT=%%i)
-    )
-    SET MSVCPLAT=x86
-    IF "%PLATFORM%" == "x64" (SET MSVCPLAT=amd64)
-
-    SET CURRENTDIR=%CD%
-    CALL "!MSVCROOT!\Common7\Tools\VsDevCmd.bat" -arch=!MSVCPLAT! || EXIT /B
-    CD %CURRENTDIR%
-    EXIT /B
-  )
-:EOF
diff --git a/build/appveyor/cl_setgenerator.bat b/build/appveyor/cl_setgenerator.bat
deleted file mode 100644
index 5eb6ff3..0000000
--- a/build/appveyor/cl_setgenerator.bat
+++ /dev/null
@@ -1,79 +0,0 @@
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-::
-
-::
-:: Detect the compiler edition we're building in and then
-:: set the GENERATOR environment variable to one of:
-::
-::  Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
-::                                 Optional [arch] can be "Win64" or "ARM".
-::  Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
-::                                 Optional [arch] can be "Win64" or "ARM".
-::  Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
-::                                 Optional [arch] can be "Win64" or "ARM".
-::  Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
-::                                 Optional [arch] can be "Win64" or "ARM".
-::  Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
-::                                 Optional [arch] can be "Win64" or "IA64".
-::  MinGW Makefiles              = Generates makefiles for MinGW
-::  MSYS Makefiles               = Generates makefiles for MSYS
-::  Unix Makefiles               = Generates makefiles for CYGWIN
-::
-:: Honors any existing GENERATOR environment variable
-::   setting instead of overwriting it, to allow it
-::   to be forced if needed.
-::
-:: Sets ERRORLEVEL to 0 if GENERATOR can be determined,
-::                 to 1 if it cannot.
-::
-
-IF DEFINED GENERATOR (
-  ECHO [warn ] using existing environment variable GENERATOR
-  EXIT /B 0
-)
-
-
-IF "%PROFILE:~0,4%" == "MING" (
-  SET GENERATOR=MinGW Makefiles
-
-) ELSE IF "%PROFILE:~0,4%" == "CYGW" (
-  SET GENERATOR=Unix Makefiles
-
-) ELSE IF "%PROFILE:~0,4%" == "MSYS" (
-  SET GENERATOR=MSYS Makefiles
-) ELSE (
-  IF /i "%PLATFORM%" == "x64" SET GENARCH= Win64
-  CALL :CHECK 16
-  IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 10 2010!GENARCH!
-  CALL :CHECK 17
-  IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 11 2012!GENARCH!
-  CALL :CHECK 18
-  IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 12 2013!GENARCH!
-  CALL :CHECK 19.0
-  IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 14 2015!GENARCH!
-  CALL :CHECK 19.1
-  IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 15 2017!GENARCH!
-)
-
-IF NOT DEFINED GENERATOR (
-  ECHO [error] unable to determine the CMake generator to use
-  EXIT /B 1
-)
-
-ECHO [info ] using CMake generator        %GENERATOR%
-EXIT /B 0
-
-:CHECK
-cl /? 2>&1 | findstr /C:"Version %1%" > nul
-EXIT /B
diff --git a/build/appveyor/simulate-appveyor.bat b/build/appveyor/simulate-appveyor.bat
index 8674f40..351c3ee 100644
--- a/build/appveyor/simulate-appveyor.bat
+++ b/build/appveyor/simulate-appveyor.bat
@@ -19,7 +19,6 @@
 ::   simulate-appveyor.bat [Debug|Release] [x86|x64] [CYGWIN|MINGW|MSVC201?]
 ::
 
-@ECHO OFF
 SETLOCAL EnableDelayedExpansion
 
 SET APPVEYOR_BUILD_FOLDER=%~dp0..\..
@@ -28,8 +27,4 @@
 SET PROFILE=%3
 
 CD %APPVEYOR_BUILD_FOLDER%
-CALL build\appveyor\%PROFILE:~0,4%-appveyor-install.bat || EXIT /B
-CD %APPVEYOR_BUILD_FOLDER%
-CALL build\appveyor\%PROFILE:~0,4%-appveyor-build.bat   || EXIT /B
-CD %APPVEYOR_BUILD_FOLDER%
-CALL build\appveyor\%PROFILE:~0,4%-appveyor-test.bat
+CALL build\appveyor\%PROFILE_CLASS%-appveyor-full.bat || EXIT /B
diff --git a/build/appveyor/cl_showenv.bat b/build/appveyor/win_showenv.bat
similarity index 97%
rename from build/appveyor/cl_showenv.bat
rename to build/appveyor/win_showenv.bat
index a70a490..51bf2c0 100644
--- a/build/appveyor/cl_showenv.bat
+++ b/build/appveyor/win_showenv.bat
@@ -14,7 +14,7 @@
 
 ECHO/
 ECHO ===============================================================================
-IF "%PROFILE:~0,4%" == "MSVC" (
+IF "%PROFILE_CLASS%" == "MSVC" (
 ECHO Versions
 ECHO -------------------------------------------------------------------------------
 ECHO boost                 = %BOOST_VERSION%
@@ -49,7 +49,7 @@
 ECHO WIN3P                 = %WIN3P%
 ECHO WITH_PYTHON           = %WITH_PYTHON%
 ECHO ZLIB_STATIC_SUFFIX    = %ZLIB_STATIC_SUFFIX%
-IF NOT "%PROFILE:~0,4%" == "MSVC" (
+IF NOT "%PROFILE_CLASS%" == "MSVC" (
   ECHO/
   ECHO UNIXy PATH
   ECHO -------------------------------------------------------------------------------
diff --git a/build/docker/msvc2017/build-compiler.bat b/build/docker/msvc2017/build-compiler.bat
index 5534428..a7ed479 100644
--- a/build/docker/msvc2017/build-compiler.bat
+++ b/build/docker/msvc2017/build-compiler.bat
@@ -41,4 +41,4 @@
 cmake --build . --target check || EXIT /B
 
 :: Install
-cmake --build . --target install
\ No newline at end of file
+cmake --install .
\ No newline at end of file
diff --git a/build/docker/msvc2017/build.bat b/build/docker/msvc2017/build.bat
index 018805b..bdf1512 100644
--- a/build/docker/msvc2017/build.bat
+++ b/build/docker/msvc2017/build.bat
@@ -42,4 +42,4 @@
 cmake --build . --target check || EXIT /B
 
 :: Install
-cmake --build . --target install
+cmake --install .