From d021eae1cf9806282745935391a5ca282f4b5999 Mon Sep 17 00:00:00 2001
From: Egor Tensin <Egor.Tensin@gmail.com>
Date: Wed, 15 Dec 2021 20:10:48 +0300
Subject: support VS 2022

---
 .github/workflows/basic.yml            |  6 +++---
 .github/workflows/boost_toolsets.yml   | 10 ++++++++--
 .github/workflows/example_toolsets.yml |  6 ++++--
 .github/workflows/msvc_versions.yml    |  6 +++++-
 project/toolset.py                     | 10 ++++++++++
 5 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/basic.yml b/.github/workflows/basic.yml
index f7d8fc5..6adf3ac 100644
--- a/.github/workflows/basic.yml
+++ b/.github/workflows/basic.yml
@@ -21,9 +21,9 @@ jobs:
   os:
     strategy:
       matrix:
-        os: [ubuntu-18.04, ubuntu-20.04, windows-2016, windows-2019, macos-10.15, macos-11]
+        os: [ubuntu-18.04, ubuntu-20.04, windows-2016, windows-2019, windows-2022, macos-10.15, macos-11]
         include:
-          - boost-version: 1.72.0
+          - boost-version: 1.78.0
     runs-on: '${{ matrix.os }}'
     name: 'Image: ${{ matrix.os }}'
     defaults:
@@ -56,7 +56,7 @@ jobs:
         python-version: [3.6, 3.7, 3.8, 3.9, 3.x]
         include:
           - os: ubuntu-latest
-          - boost-version: 1.72.0
+          - boost-version: 1.78.0
     runs-on: '${{ matrix.os }}'
     name: 'Python ${{ matrix.python-version }}'
     defaults:
diff --git a/.github/workflows/boost_toolsets.yml b/.github/workflows/boost_toolsets.yml
index ba027c6..d7c6fc4 100644
--- a/.github/workflows/boost_toolsets.yml
+++ b/.github/workflows/boost_toolsets.yml
@@ -15,10 +15,11 @@ jobs:
         boost-version: [1.58.0, 1.65.0, 1.72.0]
         toolset: [auto, clang, clang-cl, gcc, mingw, msvc]
         cygwin: [0, 1]
-        os: [ubuntu-latest, windows-2016, windows-2019]
+        os: [ubuntu-latest, windows-2016, windows-2019, windows-2022]
 
         include:
           # Prettier run names.
+          - {os: windows-2022, name: Windows 2022}
           - {os: windows-2019, name: Windows 2019}
           - {os: windows-2016, name: Windows 2016}
           - {os: ubuntu-latest, name: Ubuntu}
@@ -42,6 +43,10 @@ jobs:
           # This was fixed for 1.61 in this commit:
           # https://github.com/boostorg/test/commit/c94ef6982e2ebe77f9376579547c228f0d62e45f.
           # On Linux/Cygwin, everything should be fine though.
+          - toolset: clang
+            boost-version: 1.58.0
+            os: windows-2022
+            libraries: filesystem program_options regex system
           - toolset: clang
             boost-version: 1.58.0
             os: windows-2019
@@ -58,7 +63,8 @@ jobs:
           # Cygwin: no MSVC/clang-cl.
           - {cygwin: 1, toolset: msvc}
           - {cygwin: 1, toolset: clang-cl}
-          # Cygwin is the same on Windows Server 2016 & 2019.
+          # Cygwin is the same on different Windows versions.
+          - {os: windows-2019, cygwin: 1}
           - {os: windows-2016, cygwin: 1}
           # clang-cl is only supported by Boost.Build since 1.69 (see the
           # boost_clang_windows.yml workflow).
diff --git a/.github/workflows/example_toolsets.yml b/.github/workflows/example_toolsets.yml
index a55c7b7..d98cfe0 100644
--- a/.github/workflows/example_toolsets.yml
+++ b/.github/workflows/example_toolsets.yml
@@ -15,10 +15,11 @@ jobs:
         example: [simple, static, dynamic]
         toolset: [auto, clang, clang-cl, gcc, mingw, msvc]
         cygwin: [0, 1]
-        os: [ubuntu-latest, windows-2016, windows-2019]
+        os: [ubuntu-latest, windows-2016, windows-2019, windows-2022]
 
         include:
           # Prettier run names.
+          - {os: windows-2022, name: Windows 2022}
           - {os: windows-2019, name: Windows 2019}
           - {os: windows-2016, name: Windows 2016}
           - {os: ubuntu-latest, name: Ubuntu}
@@ -58,7 +59,8 @@ jobs:
           # Cygwin: no MSVC/clang-cl.
           - {cygwin: 1, toolset: msvc}
           - {cygwin: 1, toolset: clang-cl}
-          # Cygwin is the same on Windows Server 2016 & 2019.
+          # Cygwin is the same on different Windows versions.
+          - {os: windows-2019, cygwin: 1}
           - {os: windows-2016, cygwin: 1}
 
     runs-on: '${{ matrix.os }}'
diff --git a/.github/workflows/msvc_versions.yml b/.github/workflows/msvc_versions.yml
index 91d49c9..c1b2700 100644
--- a/.github/workflows/msvc_versions.yml
+++ b/.github/workflows/msvc_versions.yml
@@ -16,21 +16,25 @@ jobs:
           - msvc140
           - msvc141
           - msvc142
+          - msvc143
           - vs2015
           - vs2017
           - vs2019
+          - vs2022
 
         include:
           # Runner image.
           - {toolset: msvc140, os: windows-2016}
           - {toolset: msvc141, os: windows-2016}
           - {toolset: msvc142, os: windows-2019}
+          - {toolset: msvc143, os: windows-2022}
           - {toolset: vs2015, os: windows-2016}
           - {toolset: vs2017, os: windows-2016}
           - {toolset: vs2019, os: windows-2019}
+          - {toolset: vs2022, os: windows-2022}
 
           # Boost version.
-          - boost-version: 1.72.0
+          - boost-version: 1.78.0
           # Some Boost libraries commonly used by me.
           - libraries: filesystem program_options regex system test
 
diff --git a/project/toolset.py b/project/toolset.py
index 136e6dd..001eefb 100644
--- a/project/toolset.py
+++ b/project/toolset.py
@@ -49,6 +49,7 @@ class MSVCVersion(Enum):
     VS2015 = '140'
     VS2017 = '141'
     VS2019 = '142'
+    VS2022 = '143'
 
     def __str__(self):
         return str(self.value)
@@ -66,6 +67,8 @@ class MSVCVersion(Enum):
             return 'Visual Studio 2017'
         if self is MSVCVersion.VS2019:
             return 'Visual Studio 2019'
+        if self is MSVCVersion.VS2022:
+            return 'Visual Studio 2022'
         raise NotImplementedError(f'unsupported MSVC version: {self}')
 
     @staticmethod
@@ -95,6 +98,8 @@ class MSVCVersion(Enum):
             return VisualStudioVersion.VS2017
         if MSVCVersion.VS2019:
             return VisualStudioVersion.VS2019
+        if MSVCVersion.VS2022:
+            return VisualStudioVersion.VS2022
         raise NotImplementedError(f'unsupported MSVC version: {self}')
 
     def to_boost_msvc_version(self):
@@ -117,6 +122,7 @@ class VisualStudioVersion(Enum):
     VS2015 = '2015'
     VS2017 = '2017'
     VS2019 = '2019'
+    VS2022 = '2022'
 
     def __str__(self):
         return str(self.value)
@@ -134,6 +140,8 @@ class VisualStudioVersion(Enum):
             return f"Same as '{ToolsetType.MSVC}{MSVCVersion.VS2017}'"
         if self is VisualStudioVersion.VS2019:
             return f"Same as '{ToolsetType.MSVC}{MSVCVersion.VS2019}'"
+        if self is VisualStudioVersion.VS2022:
+            return f"Same as '{ToolsetType.MSVC}{MSVCVersion.VS2022}'"
         raise NotImplementedError(f'unsupported Visual Studio version: {self}')
 
     @staticmethod
@@ -160,6 +168,8 @@ class VisualStudioVersion(Enum):
             return MSVCVersion.VS2017
         if self is VisualStudioVersion.VS2019:
             return MSVCVersion.VS2019
+        if self is VisualStudioVersion.VS2022:
+            return MSVCVersion.VS2022
         raise NotImplementedError(f'unsupported Visual Studio version: {self}')
 
     def to_visual_studio_version(self):
-- 
cgit v1.2.3